问题标签 [generic-lambda]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
231 浏览

c++ - 没有名为“argument_type”的类型

我有这个功能:

我在 Linux 环境中使用 C++1z 中的 clang++-devel 进行编译。该文件生成此错误:

这是any_function.h:

如何解决此错误?

谢谢您的意见。

0 投票
3 回答
152 浏览

c++ - 如何编写使用可选返回值包装函数的 Lambda

我试图编写一个 lambda 来测量任意函数的执行时间。在很多帮助下,我已经为 C++14 和具有返回值的函数进行了管理,请参阅使用 C++14 lambda 测量任意函数的执行时间

然后我希望我的代码也可以与 C++11 一起使用,因此我用模板函数实现了相同的想法。

最后我意识到这段代码不适用于没有返回值的函数。泛化模板函数以启用时间测量对于返回 void 的函数来说非常简单。

但是当谈到测量 lambda 时,我被困住了。编译器抱怨我要使用的可选返回值的类型不完整。有可能解决这个问题吗?

这是我的代码:

如果它是用 C++11 编译器编译的(比如带有 -std=gnu++11 的 g++),它使用模板函数,因此在这里运行良好。如果它是使用 C++14 编译器 (-std=gnu++14) 编译的,它使用 lambda,因此我收到以下编译错误消息:

非常感谢您的帮助。

0 投票
2 回答
1162 浏览

c++ - 用于存储通用 lambda 的通用 std::function

当泛型 lambda 存储为 astd::function时,我们需要提供一个具体类型,例如,

因此绑定到特定类型,

以下声明:

引发编译器错误。

我知道,从 c++14 开始,auto可以用来存储 lambda 的返回值,但是在存储 lambda 时有没有办法实现这一点std::function

0 投票
1 回答
76 浏览

c++ - 用于修改 bool 类型向量(特殊容器)的 lambda 表达式中 auto 推导出的类型是什么

我想在std::vector<bool>通过引用使用函数时更改一个变量的状态,但这不起作用,因为std::vector<bool>它是一个代理对象。但是,当我尝试使用它进行更改时,lambda expression我可以对其进行修改。这是一个例子:

我可以看到v[1]已更改为false. auto我的问题是ofmodify_bool和推导出的类型是什么b

0 投票
3 回答
276 浏览

c++ - lambdas 应该替换 C++ 中的函数模板吗?

在 C++ 中,我可以写:

输出:3 3.3 3.7

使用模板编写相同的代码:

看起来更复杂。这是否意味着 lambdas 可以替换函数模板?

0 投票
1 回答
101 浏览

c++ - 如何将模板 lambda 传递给函数并将其与不同类型一起使用

我使用宏从旧 C++ 时代继承了这段代码。我目前正在更换它,并且我正处于需要考虑一些构造的地步。

通常,我有这个:

几次。fun1()根据fun2()参数类型有一组不同的参数,我也可以有arg1arg2真正的代码实际上有几层ifs ,每次都有不同的类型集,每个分支内还有几个额外的函数层)。

我想将这个因素考虑到一个可以采用这样的模板 lambda 的函数中:

现在,问题是这是模板化的,所以我不能把它变成 a std::function,所以我不知道应该使用什么样的参数来创建我的函数:

C ++ 17中有这样的选项吗?甚至 C++20?

0 投票
4 回答
10895 浏览

c++ - 当 C++14 已经有泛型 lambda 时,在 C++20 中引入模板 lambda 的需要是什么?

引入了通用 lambda,使得编写以下内容成为可能:

很明显,这个通用 lambdafunc就像模板函数func一样工作。

为什么 C++ 委员会决定为泛型 lamda 添加模板语法?

0 投票
3 回答
528 浏览

c++ - 计算 lambda 中的参数数量

我需要知道 lambda 具有的确切参数数量。我不关心他们的类型,我只需要计数。

检测可变参数 lambda 也很好,这样我也可以处理这种边缘情况。

我怎样才能得到这些信息?

0 投票
3 回答
446 浏览

c++ - c++,一个通用的递归模板函数,用于遍历树状结构

我尝试使用通用递归函数遍历树状结构,而无需每次为每个结构在全局中定义递归函数。

我用 CA 创建了一棵树

我可以使用这个宏来遍历这个结构,这可以与其他树状结构一起使用。

很难阅读,但效果很好,我像这样遍历 CA 的根

与其他结构一起使用,像这样

遍历 MyData 的根

这里有一个大问题。

我必须指定对象及其容器的类型,因为这里的 lambda 表达式是以递归形式定义的。

宏可以像模板函数一样推断类型吗?或者我应该以其他方式实现这一目标?

0 投票
1 回答
81 浏览

c++ - std::function 接受具有不同传递类型的参数的 lambda 函数(通过 ref,通过 val)

请看下面的代码

在代码示例中,我们有一个 std::function 分配了不同类型的 lambda。

我理解 lambda 3 因为函数签名匹配。

但是 lambda 1 创建了不同的函数签名,但编译正确。

Lambda 2 推断出错误的自动类型(通过 val 而不是通过 ref)并正确编译。

这是功能还是错误?我对函数类/ lambdas 和自动类型推断有什么误解?

更新:

感谢Handy999的回答,但是为什么以下内容没有编译呢?