鉴于:
template<typename T>
inline bool f( T n ) {
return n >= 0 && n <= 100;
}
与unsigned
类型一起使用时会产生警告:
unsigned n;
f( n ); // warning: comparison n >= 0 is always true
n >= 0
有没有什么聪明的方法不做类型的T
比较unsigned
?我尝试添加部分模板专业化:
template<typename T>
inline bool f( unsigned T n ) {
return n <= 100;
}
但 gcc 4.2.1 不喜欢这样。(无论如何,我不认为这种部分模板专业化是合法的。)