Нет, поскольку аргумент шаблона не может быть выведен. Вам нужно указать его, как еще компилятор будет знать, чем его заменить? int
? double
? Пользовательский тип?
Редактировать
Если вы уже используете C ++ 0x (я полагаю, это из-за auto
), вы можете использовать новый стиль функции конечного возвращаемого типа:
auto func2() -> decltype(func()) {
return func();
}
decltype(func())
получит тип возврата func
, фактически не вызывая его.
Edit2
Хорошо, вам даже не нужен конечный тип возврата, простой decltype
тоже делает свою работу:
decltype(func()) func2() { return func(); }
Конечный тип возврата более полезен в ситуациях, когда возврат зависит от некоторых или всех параметров, особенно если они шаблонные. Смотрите здесь для хорошего объяснения.