Andy Andy -4 years ago 121
C++ Question

explicit specialization for function template c++

template <typename T>
bool validate(const T& minimum, const T& maximum, const T& testValue) {
return testValue >= minimum && testValue <= maximum;

template <>
bool validate<const char&>(
const char& minimum,
const char& maximum,
const char& testValue)
char a = toupper(testValue);
char b = toupper(minimum);
char c = toupper(maximum);
return a >= b && a <= c;

This is the function template, somehow in
function is called, it never uses the second function(the one for
const char&
) even when the parameters are
. Can anyone see where my problem is?

Answer Source

The type you specialized for - const char& does not match what T deduces as when you pass a char - it deduces to char!

(template type parameters can deduce to references only in presence of universal references)


template <> 
bool validate<char> ...

Anyways, why are you not overloading instead?

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download