我碰到什麼樣子從鐺++編譯器sizeof運算奇怪的行爲...()操作:這是一個使用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 ...()的值是否定義爲這種情況,還是編譯器行爲不當?
你使用'boost :: tuple'而不是'std :: tuple'嗎?這將解釋這些症狀,我可以發佈答案。如果不是,你的編譯器/標準庫是什麼版本? – 2012-08-09 02:34:17
什麼編譯器/版本? – 2012-08-09 02:35:11
我使用std :: tuple和clang ++版本:Apple clang版本4.0(tags/Apple/clang-421.0.57)(基於LLVM 3.1svn) Target:x86_64-apple-darwin12.0.0 Thread model:posix – 2012-08-09 03:14:45