Информация об изменениях

Сообщение Re[4]: Создать переменную со скопом для if от 10.04.2018 21:14

Изменено 10.04.2018 22:42 watchmaker

Re[4]: Создать переменную со скопом для if
Здравствуйте, Marty, Вы писали:

M>    //if (auto a = foo()) //!!!!!!!!! как тут вызвать A::isValid()?
M>    if ((auto a = foo()).isValid()) // а так не работает

в современном с++ можно так:
if (auto a=foo(); a.isValid()) ...




M>Остался вопрос — смутно помню, почему-то в подобных случаях рекомендовалось перегружать и operator void* (или вместо operator bool, или совместно с ним). Не напомните, в чем там хитрость, если вообще есть?


Смотри на "safe bool idiom".
Но сегодня это лишнее, так как таперь можно (и нужно) использовать explicit operator bool()
Re[4]: Создать переменную со скопом для if
Здравствуйте, Marty, Вы писали:

M>    //if (auto a = foo()) //!!!!!!!!! как тут вызвать A::isValid()?
M>    if ((auto a = foo()).isValid()) // а так не работает

в современном с++ можно так:
if (auto a=foo(); a.isValid()) ...




M>Остался вопрос — смутно помню, почему-то в подобных случаях рекомендовалось перегружать и operator void* (или вместо operator bool, или совместно с ним). Не напомните, в чем там хитрость, если вообще есть?


Смотри на "safe bool idiom".
Но сегодня это лишнее, так как теперь можно (и нужно) использовать explicit operator bool()