【发布时间】:2014-09-28 00:27:58
【问题描述】:
标签会提出问题,但请考虑以下几点:
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 中推断函数返回类型?
我正在寻找不需要手动指定返回类型并且不需要对其他参数进行侵入性更改的方法。如果这不可能,那么我只是在寻找一个权威声明来验证这一点。
【问题讨论】:
-
几乎可以肯定是重复的,但我找不到它,因为它被 C++11 淹没了。目前只有大约 300 个 C++03 标记问题,这不是其中之一。
标签: c++ templates return-type c++03 type-deduction