我遇到了来自 clang++ 编译器的 sizeof...() 运算符的奇怪行为:
template <typename... Args>
void test(tuple<Args...> t) {
cout << "size: " << sizeof...(Args) << endl;
}
...
test(make_tuple(1, 2)); // prints 'size: 10'
我意识到更标准的方法是:
template <typename... Args>
void test(tuple<Args...> t) {
cout << "size: " << tuple_size<tuple<Args...> >::value << endl;
}
test(make_tuple(1, 2)); // prints 'size: 2'
但我仍然很好奇为什么我会得到第一个版本的奇怪值。在这种情况下 sizeof...() 的值是未定义的,还是编译器行为不端?