【发布时间】:2014-09-26 12:58:11
【问题描述】:
(是的,标题很奇怪,感谢我的可怜英语;希望有人能改进它。)
回复this question,发现这段代码有效:
template <typename T1, typename T2> class A { };
template <template <typename...> class U> class B { };
int main()
{
B<A> it_works;
}
..虽然template <typename...> class 和template <typename, typename> class 不相等。
我试图弄清楚为什么它是可能的,并观看 N3337 standard 的 [temp.param],但我找不到任何东西。怎么可能?
【问题讨论】:
-
同样的原因,你可以先做
template<typename... Ts> void foo();,然后再做foo<int>();,或者foo<char, double>();,或者任何你想要的。如果您正在寻找标准文本,Variadic Templates 下的很多内容:模板参数包是接受零个或多个模板参数的模板参数 -
哦,你的评论其实就是一个答案>o
-
@ikh:是的,现在这是一个正确的答案。
标签: c++ templates c++11 language-lawyer