3
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; 
} 

これは、関数テンプレートでは、何とかvalidate関数が呼び出されmainで、それはパラメータがchar場合であっても、第二の機能(const char&に1つ)を使用することはありません。誰か私の問題がどこに見える?それはcharする推論する - あなたが専門明示的な特殊++

+0

どのように呼び出すかを教えてください。 – user975989

答えて

6

タイプ - あなたはcharを渡すときのようconst char&は何T推論と一致していません!だから、

(テンプレート型パラメータのみ普遍的な参照の存在下での参照に推測することができます)

template <> 
bool validate<char> ... 

とにかく、なぜあなたは代わりに過負荷にされていませんか?

関連する問題