模板函数匹配不明原因的变化我有一个包含一个模板函数下面的代码。当我使用枚举的第二个参数调用此函数时:在某些情况下,它会查找模板特化,并且在某些情况下它不会。C++与枚举
我已经验证了枚举在两种情况下都是相同的枚举(例如没有重定义)并且其他参数具有正确的值,我发现一个编译是使用-Winline集合完成的(我没有尝试更改它)还有什么要看?
class A {
public:
template <typename T>
int f(uint32_t id, T const& t, bool cond);
...
};
template <typename T>
int A::f(uint32_t id, T const& t, bool cond)
{
...
}
template <>
inline int A::f<int>(uint32_t, int const& t, bool cond)
{
....
}
您允许其专业类外的函数模板而不在类中声明的专业化? – 2011-02-10 02:58:12
@Jeremiah Willcock-是的,这是合法的。不过,您只能完全专注于此。我不知道为什么标准委员会决定合法。 – templatetypedef 2011-02-10 03:04:14