このコードの最後の行がコンパイルされないようにするにはどうすればよいですか?
#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
}
最後の行は に含まれる int 値を調べていませんopt
が、代わりに bool への型変換としてコンパイルされており、ユーザーが意図したものではないようです。
安全な bool イディオムはここに関連しているようですか?