La siguiente falla al compilar el compilador VC++ 8.0 con un error (no he probado en el último compilador Visual Studio todavía.)La deducción de argumentos de la plantilla falla en MSVC: ¿error?
error C2440: const no se puede convertir de': 'retorno' char *' a ' const char (&) [6]'
template <typename T>
inline T const& compare (T const& a, T const& b)
{
return a < b ? b : a;
}
int main()
{
::compare("string1", "string2");
}
Dentro de la plantilla de función, parece cadenas son const char (&)[6]
.
Por lo que sé, cuando se aplica el operador <
, la matriz debe decaer a puntero. Entonces, ¿podría este error ser debido a un posible error?
gcc [compila] (http://ideone.com/WVU4h) este código sin ningún problema, por lo que este debe ser un error en MSVC. – Vlad
Es poco probable que desee pasar C cadenas a dicha plantilla de todos modos (para comparar sus direcciones). – UncleBens
Esto parece un error, MSVC dice el tipo de la expresión 'a Praetorian