相关疑难解决方法(0)

函数返回lambda表达式

我想知道是否可以在C++ 11中编写一个返回lambda函数的函数.当然一个问题是如何声明这样的功能.每个lambda都有一个类型,但是这种类型在C++中是不可表达的.我不认为这会奏效:

auto retFun() -> decltype ([](int x) -> int)
{
    return [](int x) { return x; }
}
Run Code Online (Sandbox Code Playgroud)

这不是:

int(int) retFun();
Run Code Online (Sandbox Code Playgroud)

我不知道从lambdas到函数指针或类似函数的任何自动转换.手工制作函数对象并返回它的唯一解决方案是什么?

c++ lambda function c++11

85
推荐指数
4
解决办法
3万
查看次数

使用可变参数模板构建元组

所以我在C++ 11之前编写了一些代码,用于根据模板参数解析字符串.我想使用可变参数模板,而不是每个参数数量都有一个定义,但我无法正确理解如何正确初始化元组.看到我想要的简化代码,这是针对2个参数的特殊情况:

template <typename Arg1, typename Arg2>
struct parser
{
  static tuple<Arg1, Arg2> parse(const string& str) 
  {
    Arg1 arg1;
    Arg2 arg2;
    // do the parsing with for example stringstream
    return tuple<Arg1, Arg2>(arg1, arg2);             
  }
};
Run Code Online (Sandbox Code Playgroud)

我在将参数放在可变参数的元组中时遇到问题.我可以用以下方法构造返回值持有者:

tuple<Args...> retVal; 
Run Code Online (Sandbox Code Playgroud)

但我不知道是否有办法迭代参数并将它们放入元组中.我已经看到了一些递归魔法来获得例如printf函数,但我不知道它是否适用于这种情况.

c++ templates c++11

6
推荐指数
1
解决办法
8281
查看次数

标签 统计

c++ ×2

c++11 ×2

function ×1

lambda ×1

templates ×1