Chcę utworzyć funkcję, która sprawdzi, czy parametry są poza zakresem.Porównanie różnych typów w szablonie
Pisałem to:
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);
}
}
Jednak, kiedy to zrobić
uint32_t var = 5000;
checkParameter(var, 0, 262143);
pojawia się ostrzeżenie:
warning: comparison between signed and unsigned integer expressions
Jak mogę utworzyć funkcję, która bezpiecznie będzie obsługuje wszystkie typy?
'checkParameter (var, 0U, 262143u)' należy usunąć ostrzeżenie. – Jarod42
Dlaczego używasz trzech typów zamiast jednego? Co to jest przypadek, w którym typ wartości może różnić się od jej granic? – borisbn
@borisbn to bardzo łatwo, aby tak się stało – o11c