【发布时间】:2016-12-01 00:38:29
【问题描述】:
我想使用std::function 将返回值类型设为通用,但它不起作用,代码:
可调试代码见:http://cpp.sh/5bk5
class Test
{
public:
template <typename R, typename F = std::function<R()>>
R f(F&& op) {
op();
}
void t() {
int a = 10;
f([this, a]() { return "chars"; });
}
};
int main()
{
t::Test test;
test.t();
return 0;
}
【问题讨论】:
-
也许使用
result_of来获取返回类型? -
您是否尝试过使用 void*?这就是拥有泛型类型的 Cish 方式。
标签: c++ c++11 templates lambda template-argument-deduction