Дано:
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 не нравится. (Я не думал, что какая-то частичная специализация шаблонов будет законной в любом случае.)