2017-11-06 2 views
1

Ich sah std::variant_size beim Browsen cppreference.Warum funktioniert struct variant_size; undefiniert in C++ 17?

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

ich hier gesehen habe, erklären struct variant_size; als undefined.

Also, was ist der Grund zu erklären struct variant_size; undefined?

+1

So erhalten Sie einen schönen Fehler, wenn Sie versuchen, es auf etwas zu verwenden, das nicht explizit unterstützt wird. – StoryTeller

Antwort

6

Der Teil, den Sie betrachten, ist die generische Deklaration für . Die eigentliche Definition der variant_size sind die unten definierten Spezialisierungen . Das heißt,

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

und die cv -qualifier Spezialisierungen darunter.