我必须向调用者返回一个int和一个函数对象,我被认为返回了一个像make_tuple(int,[](some){})
这样的元组我现在在GCC上并不支持decltpe(auto)
作为返回类型,无论如何,我现在可以将我的返回类型设为std::tuple<int,auto> myfun()
我现在一直在做(但不确定)
auto myfun()->decltype(make_tuple(100,p))
{
auto p=[](some){};
return make_tuple(100,p);
}
我在做什么好吗?
答案 0 :(得分:5)
不,因为p
在该范围内不可用,并且lambda表达式不会出现在未评估的上下文中(这是decltype)。 (查看更多here)
但是,您可以将其打包在std::function
:
std::tuple<int, std::function<void(some)>> myfun()
{
std::function<void(some)> p = [](some){};
return std::forward_as_tuple(100, p);
}