Вывод типа возвращаемого функцией в 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?

Я ищу методы, которые не требуют ручного указания типа возвращаемого значения и не требуют навязчивых изменений других параметров. Если это невозможно, то я просто ищу авторитетное утверждение, подтверждающее это.

Ответы на вопрос(1)

Ваш ответ на вопрос