Desidero creare una funzione che verifichi se i parametri non rientrano nell'intervallo.Confronto di tipi diversi nel modello
Ho scritto questo:
template<typename X,typename Y,typename Z >
void checkParameter(X val, Y lower, Z upper)
{
if((val > upper) || (val < lower))
{
log("checkParameter, val = % , lower= % , upper= % \n", val,
lower,upper);
ASSERT(false);
}
}
Tuttavia, quando faccio questo
uint32_t var = 5000;
checkParameter(var, 0, 262143);
ottengo l'avvertimento:
warning: comparison between signed and unsigned integer expressions
Come posso fare una funzione che in modo sicuro sarà gestire tutti i tipi?
'checkParameter (var, 0U, 262143u)' dovrebbe rimuovere l'avviso. – Jarod42
Perché usi tre tipi invece di uno? Qual è il caso in cui il tipo di valore può essere diverso dai suoi limiti? – borisbn
@borisbn è molto facile che ciò accada – o11c