显式专用化;“”不是函数模板的专用化问题

时间:2022-03-03 22:55:04
定义如下:
template<> inline bool  IsNull(const Date& d)    { return d.year == -32768; }


显示错误:
error C2912: 显式专用化;“bool Upp::IsNull(const Upp::Date &)”不是函数模板的专用化

不知道什么情况啊,哪位大神帮帮忙~~~

6 个解决方案

#1


好像说的是 IsNull 不是函数模板。

#2


有定义过:
template <class T> bool IsNull(const T& x) { return x.IsNullInstance(); }

就是这个定义在另一个头文件里面,不过include这个头文件也不行啊~~

#3


“bool Upp::IsNull(const Upp::Date &)是类Upp的成员函数?

#4


template<class T> bool IsNull(const T &x) { return x.IsNullInstance(); }

的“显式专用化”按格式应当这样写:
template<> bool IsNull<Date>(const Date &d) { return d.year == -32768; }

但建议的做法是直接“重载”:
inline bool IsNull(const Date &d) { return d.year == -32768; }

#5


直接重载就好了,不需要特化。 
/*template<>*/ inline bool  IsNull(const Date& d)    { return d.year == -32768; }

#6


直接重载没错了,感谢各位好心人~~~就是不太明白原因。。。

#1


好像说的是 IsNull 不是函数模板。

#2


有定义过:
template <class T> bool IsNull(const T& x) { return x.IsNullInstance(); }

就是这个定义在另一个头文件里面,不过include这个头文件也不行啊~~

#3


“bool Upp::IsNull(const Upp::Date &)是类Upp的成员函数?

#4


template<class T> bool IsNull(const T &x) { return x.IsNullInstance(); }

的“显式专用化”按格式应当这样写:
template<> bool IsNull<Date>(const Date &d) { return d.year == -32768; }

但建议的做法是直接“重载”:
inline bool IsNull(const Date &d) { return d.year == -32768; }

#5


直接重载就好了,不需要特化。 
/*template<>*/ inline bool  IsNull(const Date& d)    { return d.year == -32768; }

#6


直接重载没错了,感谢各位好心人~~~就是不太明白原因。。。