このコードの最後の行がコンパイルされないようにする方法はありますか?ブールへのboost :: optionalの変換
#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値を調べ、その代わりに、ブールへの型変換としてコンパイルし、ユーザーが意図したものではないようではありません。
安全なブールのイディオムがここに関係しているようですか? boost::optional
の
何かのような意味ですか?あなたが望むものを英語で説明してください。コードでは、明らかにあなたが望むものが記述されていません。だから私たちはどのように知るべきですか? – Oswald
できません、 'boost :: optional'は' operator! 'を実装しています。これが上記の最後の行をコンパイルする理由です。その演算子を隠すためにこれを派生させることはできません。コードを修正する必要があります。 – Nim