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

Jes*_*Jes 0 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 
Run Code Online (Sandbox Code Playgroud)

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

Tar*_*ama 13

std::integer_sequence::size 是一个函数,所以你需要调用它:

std::integer_sequence<int, 1, 2, 3>::size() => 3
Run Code Online (Sandbox Code Playgroud)

您可能正在看,1因为如果您编写类似的代码

std::cout << std::integer_sequence<int, 1, 2, 3>::size;
Run Code Online (Sandbox Code Playgroud)

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

  • @MayurK:因为它是允许代码编译的合法转换.这就是隐式转换的工作方式; 它搜索可用的转换,直到找到使代码有效的转换. (2认同)