1
n3527は、C++にstd::optional<T>
を追加することを提案しています。その一部として、タイプタグnullopt_t
を定義します。C++ optional_t型タグ(n3527)
GCCの(4.9)は次のようoptional_t
を定義のlibstdC++:私の質問がある
struct nullopt_t
{
explicit constexpr nullopt_t(int) noexcept {}
};
constexpr nullopt_t nullopt{0};
:なぜそれがそのように行われている、であるとしてのlibC++
struct nullopt_t
{
enum class _Construct { _Token };
explicit constexpr nullopt_t(_Construct) { }
};
constexpr nullopt_t nullopt { nullopt_t::_Construct::_Token };
打ち鳴らすの(3.6)は、それを定義します(見た目に)複雑すぎる?言い換えれば
、次のようになぜそれが定義することはできません。
struct nullopt_t { };
constexpr nullopt_t nullopt { };
これは、例えば、std::defer_lock_t
等が標準ライブラリで定義されているか、です。
これは、独自の 'nullopt_t'を構築する正当な方法がないことを意味しますか? 'nullptr_t'のような並べ替え? – Yakk
はおそらく関連:[実験::オプションnullopt_tコンストラクタ](http://stackoverflow.com/questions/28332078/) – kakkoko
@kakkoko、あなたは右のトラックに私を置きます! 'op = {}'構文と関係があります。それは基本的に、あいまいさを避けるために 'nullopt_t'を非'DefaultConstructible'にします。 –