std :: index_sequence返回大小始终为1

时间:2016-11-15 14:38:25

标签: c++ metaprogramming c++14

我是C ++ 14 std::index_sequence的新手。结构的size成员是什么意思?无论我创造了多少元素,它总是返回一个。

std::integer_sequence<int, 1, 2, 3>::size  => 1
std::index_sequence<8, 7, 1, 5>::size => 1 

我虽然返回值应该是3和4(该序列的元素数)。

1 个答案:

答案 0 :(得分:13)

std::integer_sequence::size是一个函数,因此您需要调用它:

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

您可能会看到1,因为如果您编写类似

的代码
std::cout << std::integer_sequence<int, 1, 2, 3>::size;

然后该函数将被隐式转换为函数指针,然后转换为bool,并且该值将为true,因为指针不为空。