Ich habe eine einfache Klasse:Entfernen g ++ Warnung für Template-Parameter
template<size_t N, typename T>
class Int
{
bool valid(size_t index) { return index >= N; }
T t;
}
Wenn ich eine Instanz dieser Klasse definieren als:
Int<0, Widget> zero;
erhalte ich eine g ++ Warnung:
warning: comparison is always true due to limited range of data type
Ich habe versucht, dies zu tun, aber ich konnte nicht herausfinden, wie eine Funktion mit einem nicht-type Template-Parameter teilweise spezialisieren. Es scheint, als wäre es möglicherweise nicht möglich, diese Warnung in g ++ zu deaktivieren. Was ist der richtige Weg, um diese Warnung entweder auszublenden oder diese Methode so zu schreiben, dass sie immer wahr zurückgibt, wenn N == 0?
Danke!
sieht aus wie ein GCC-Bug –
Benötigen Sie den vollen Bereich von 'size_t', oder könnten Sie mit einem signierten Typ gehen? – Bill
@Bill: Leider brauche ich den ganzen Bereich :-( – JaredC