与えられた:
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;
}
しかし、gcc4.2.1はそれが好きではありません。(とにかく、そのような部分的なテンプレートの特殊化が合法であるとは思いませんでした。)