Шаблон функции с типом возврата T не компилируется

Следующий код компилируется нормально:

template
void f(const T &item) { return; }

int main() 
{
  f("const string literal");
}

Компиляция завершена на ideone: http://ideone.com/dR6iZ

Но когда я упоминаю тип возвращаемого значения, он не компилируется:

template
T f(const T &item) { return item; }

int main() 
{
  f("const string literal");
}

Теперь он выдает ошибку:

prog.cpp: 6: error: нет соответствующей функции для вызова 'f (const char [21])'

Код на ideone: http://ideone.com/b9aSb

Даже если я сделаю возвращаемый тип const T , он не компилируется .

] Мой вопрос:

  • Почему он не компилируется?
  • Какое отношение имеет возвращаемый тип к ошибке и созданию экземпляра шаблона функции?

5
задан Nawaz 15 March 2011 в 02:10
поделиться