Сообщение Re[4]: Создать переменную со скопом для if от 10.04.2018 21:14
Изменено 10.04.2018 22:42 watchmaker
Re[4]: Создать переменную со скопом для if
Здравствуйте, Marty, Вы писали:
в современном с++ можно так:
M>Остался вопрос — смутно помню, почему-то в подобных случаях рекомендовалось перегружать и operator void* (или вместо operator bool, или совместно с ним). Не напомните, в чем там хитрость, если вообще есть?
Смотри на "safe bool idiom".
Но сегодня это лишнее, так как таперь можно (и нужно) использовать explicit operator bool()
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>Остался вопрос — смутно помню, почему-то в подобных случаях рекомендовалось перегружать и operator void* (или вместо operator bool, или совместно с ним). Не напомните, в чем там хитрость, если вообще есть?
Смотри на "safe bool idiom".
Но сегодня это лишнее, так как теперь можно (и нужно) использовать explicit operator bool()
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()