只是想知道为什么这是无效的:
#include <iostream>
template <std::size_t... Is>
void foo(Is&&... args) {
std::cout << "foo called with " << sizeof...(Is) << "params\n";
}
int main() {
foo(1, 2, 3, 4);
}
这似乎是一个非常合理的例子,但在我手头能找到的任何编译器上都会失败。
如果我将class
替换为size_t
,则该示例按预期工作。我还尝试使用新的auto
模板参数,但没有在线编译器接受此参数,因此我不知道这是无效用例还是符合性问题。
size_t
类型的一个值。 - NathanOlivervoid foo(1 a, 2 b, 3 c, ...)
,那么为什么要写void foo(Is... )
呢? ;) - Holtvoid foo(Is&&... args)
是一个明显的编译器错误。 - NathanOliver