Следующее не удается скомпилировать на компиляторе VC ++ 8.0 с ошибкой ( Я еще не пробовал его на последней версии компилятора Visual Studio.)
ошибка C2440: 'return': невозможно преобразовать из 'const char *' в '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");
}
Внутри шаблона функции кажется, что строки имеют вид const char (&) [6]
.
Насколько мне известно, когда применяется оператор <
, массив должен быть преобразован в указатель.
Так может ли эта ошибка быть из-за возможной ошибки?