为什么最简单的模板模板不能编译?

时间:2014-02-17 08:10:07

标签: c++ templates c++11 compiler-errors template-templates

使用VC ++ 2013 CTP无法编译以下代码。

template <template <class> A, class B>
void f(A<B>)
{}

输出如下:

error C2988: unrecognizable template declaration/definition
error C2059: syntax error : '<L_TEMPLATEDECL>'
error C2065: 'A' : undeclared identifier
error C2065: 'B' : undeclared identifier
error C2988: unrecognizable template declaration/definition
error C2059: syntax error : ')'

2 个答案:

答案 0 :(得分:4)

你是说这个吗?

template <template <class> class A, class B>
void f(A<B>)
{}

答案 1 :(得分:3)

对于它的价值,clang说:

error: template template parameter requires 'class' after the parameter list
template <template <class> A, class B>
                           ^
                           class