Вывод типа возвращаемого функцией в C ++ 03
Теги задают вопрос, но, тем не менее, учтите следующее:
template<typename F, typename A, typename R>
R call(F function, A arg) {
return function(arg);
}
int foo(char) {
return 5;
}
int main() {
call(foo, 'a');
}
Компилятор с радостью компилирует это, если параметр R удален, а int вставлен вручную в качестве возвращаемого типа. Как показано, компилятор не может знать, что делать с R.
Как я могу выводить типы возвращаемых функций в C ++ 03?
Я ищу методы, которые не требуют ручного указания типа возвращаемого значения и не требуют навязчивых изменений других параметров. Если это невозможно, то я просто ищу авторитетное утверждение, подтверждающее это.