std :: tuple是否接受auto作为类型

时间:2016-08-17 19:25:51

标签: c++ c++11 auto stdtuple

我必须向调用者返回一个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);
}

我在做什么好吗?

1 个答案:

答案 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);
}