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
定义?
答案 0 :(得分:1)
using def = typename x::template d<0>;
需要告知编译器d
是模板,否则<
被解释为小于运算符,而不是开口尖括号。