Как я могу предотвратить компиляцию последней строки этого кода?
#include <boost/optional.hpp>
int main()
{
typedef boost::optional<int> int_opt;
int_opt opt = 0;
bool x = opt; // <- I do not want this to compile
}
В последней строке не рассматривается opt
содержащее значение int, а вместо этого компилируется как преобразование типа в bool и, похоже, не так, как предполагал пользователь.
Идиома безопасного bool, похоже, здесь важна?