【问题标题】:Why can the simplest template-template not be compiled?为什么最简单的template-template编译不出来?
【发布时间】:2014-02-17 08:10:07
【问题描述】:

以下代码无法使用 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 : ')'

【问题讨论】:

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


    【解决方案1】:

    你是这个意思吗?

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

    【讨论】:

    • 是的。这正是我想要的。谢谢。
    【解决方案2】:

    对于它的价值,clang 说:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 2012-06-19
    • 2016-12-31
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多