42

安全な 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

テンプレートを使用して自分を傷つけようとしましたが、成功しませんでした。

どうすればそれを機能させることができますか?

4

4 に答える 4