2017-11-06 2 views
1

cppreferenceを参照すると、std::variant_sizeが見られました。なぜstruct variant_sizeですか; C++ 17では未定義ですか?

template <class T> 
struct variant_size; /* undefined */ (1) (since C++17) 

私は未定義として、ここではstruct variant_size;宣言を見ました。

だから、struct variant_size;が宣言されていない理由は何ですか?

+1

明示的にサポートされていないもので使用しようとすると、素晴らしいエラーが発生します。 – StoryTeller

答えて

6

あなたが見ている部分は、variant_sizeの一般的な宣言です。 variant_sizeの実際の定義は、以下に定義された特殊化 です。すなわち、

template <class... Types> 
struct variant_size<std::variant<Types...>> 
    : std::integral_constant<std::size_t, sizeof...(Types)> {}; 

およびcv修飾子の特殊化がその下にあります。

関連する問題