安全な bool idiomを適用するbool ラッパー構造体を設計しようとしています。
これを解決するための古典的な実装は非常に簡単です: スケルトンは次のようになります:
struct Bool final
{
Bool() = default;
Bool(bool value)
: _value{value}
{}
explicit operator bool() const {
return _value;
}
private:
bool _value{false};
};
私が改善しようとしている部分は、どのようBool
に構築されているかです。
たとえば、設計による暗黙的な絞り込みを回避したい:
Bool b1(45); // yields warnings, but it compiles
Bool b2{3}; // not ok by standard
テンプレートを使用して自分を傷つけようとしましたが、成功しませんでした。
どうすればそれを機能させることができますか?