C2760类模板的编译器错误

时间:2018-07-24 13:55:53

标签: c++

VC ++ 2017使用以下代码报告C2760错误:

template <typename x>
struct y
{
    static void z()
    {
        using def = typename x::d<0>;
    }
};

struct some
{
    template <int N> struct d;
};

// ... y<some> ...

编译器输出:

my.cpp(6): error C2760: syntax error: unexpected token '<', expected ';'
my.cpp(8): note: see reference to class template instantiation 'y<x>' being compiled

问题是如何在def内写入y::z定义?

1 个答案:

答案 0 :(得分:1)

using def = typename x::template d<0>;

需要告知编译器d是模板,否则<被解释为小于运算符,而不是开口尖括号。