我想专门针对什么' Pass'是的,我想知道为什么这不编译? (它是班级的一部分):
struct Passes {
enum Value {
First,
Second
};
};
template<Passes::Value Pass_t> void output();
template<> void output<Passes::Second>();
连连呢? 我使用intel编译器收到的错误是:
error: an explicit template argument list is not allowed on this declaration
答案 0 :(得分:3)
建议?
首先,发布错误消息。我假设你有一个类似于我的(一旦我将你的代码片段扩展为我可以编译的东西):
explicit specialization in non-namespace scope
然后,阅读错误消息。正如它所说,您只能在命名空间范围内专门化模板,而不是在类中:
struct Thing {
// Primary template declared as a class member
template<Passes::Value Pass_t> void output();
};
// Specialisation declared at namespace scope
template<> void Thing::output<Thing::Passes::Second>();