GSi*_*GSi 5 c++ variadic-templates c++11 template-argument-deduction
如我所知,以下代码应该是"不推断上下文"(或不是?)
template <class... X, class Y>
void f(X... args, Y y)
{
}
int main()
{
f(12);
f<int, int, int>(1, 2, 3, 4);
}
Run Code Online (Sandbox Code Playgroud)
但G ++ 4.9编译它的两个实例f中main...谁能解释一下吗?
该规则仅适用于类模板,不适用于函数,因为可以为函数推导模板。如果您在类模板上尝试这样做,您将看到错误:
template <class... X, class Y>
class C { // This won't compile.
};
Run Code Online (Sandbox Code Playgroud)
欲了解更多信息,请参阅http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf中的第7页:
如果类模板的模板参数是模板参数包,则它必须是最后一个模板参数。注意:这不是要求这些不是函数模板的要求,因为可能会推导模板参数 (14.8.2)
| 归档时间: |
|
| 查看次数: |
190 次 |
| 最近记录: |