C++ std::索引_序列返回大小始终为1

C++ std::索引_序列返回大小始终为1,c++,metaprogramming,c++14,C++,Metaprogramming,C++14,我不熟悉C++14 std::index_序列。结构的大小成员是什么意思?无论我创建了多少元素,它总是返回一个 std::integer_sequence<int, 1, 2, 3>::size => 1 std::index_sequence<8, 7, 1, 5>::size => 1 我认为返回值应该是该序列元素数的3和4 std::integer\u sequence::size是一个函数,因此需要调用它: std::integer_sequen

我不熟悉C++14 std::index_序列。结构的大小成员是什么意思?无论我创建了多少元素,它总是返回一个

std::integer_sequence<int, 1, 2, 3>::size  => 1
std::index_sequence<8, 7, 1, 5>::size => 1 
我认为返回值应该是该序列元素数的3和4

std::integer\u sequence::size是一个函数,因此需要调用它:

std::integer_sequence<int, 1, 2, 3>::size() => 3

然后,函数将隐式转换为函数指针,然后转换为bool,由于指针不为null,因此该值将为true。

;需要。没有一个或一个SSCCE,很难说什么,但这是一个很好的猜测。但这应该会给你编译器警告。不要忽视编译器警告,修复它们和修复错误一样重要。我只是好奇。为什么函数指针在cout中被转换为bool?编译器应该对此发出警告。@MayurK,因为有一个operator@MayurK:因为这是允许代码编译的合法转换。这就是隐式转换的工作原理;它搜索可用的转换,直到找到使代码工作的转换。
std::cout << std::integer_sequence<int, 1, 2, 3>::size;