为什么struct variant_size; 在C++ 17中未定义?

Jay*_*esh 1 c++ variant c++17

std::variant_size在浏览cppreference时看到了.

template <class T>
struct variant_size; /* undefined */    (1) (since C++17)
Run Code Online (Sandbox Code Playgroud)

我在这里看到,struct variant_size;声明为未定义.

那么,声明struct variant_size;undefined 的原因是什么?

mpa*_*ark 6

您正在查看的部分是通用声明variant_size.实际的定义variant_size是下面定义的专业化.也就是说,

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

以及cv下面的-qualifier专精.