问题标签 [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.
c++ - 没有名为“argument_type”的类型
我有这个功能:
我在 Linux 环境中使用 C++1z 中的 clang++-devel 进行编译。该文件生成此错误:
这是any_function.h:
如何解决此错误?
谢谢您的意见。
c++ - 如何编写使用可选返回值包装函数的 Lambda
我试图编写一个 lambda 来测量任意函数的执行时间。在很多帮助下,我已经为 C++14 和具有返回值的函数进行了管理,请参阅使用 C++14 lambda 测量任意函数的执行时间。
然后我希望我的代码也可以与 C++11 一起使用,因此我用模板函数实现了相同的想法。
最后我意识到这段代码不适用于没有返回值的函数。泛化模板函数以启用时间测量对于返回 void 的函数来说非常简单。
但是当谈到测量 lambda 时,我被困住了。编译器抱怨我要使用的可选返回值的类型不完整。有可能解决这个问题吗?
这是我的代码:
如果它是用 C++11 编译器编译的(比如带有 -std=gnu++11 的 g++),它使用模板函数,因此在这里运行良好。如果它是使用 C++14 编译器 (-std=gnu++14) 编译的,它使用 lambda,因此我收到以下编译错误消息:
非常感谢您的帮助。
c++ - 用于存储通用 lambda 的通用 std::function
当泛型 lambda 存储为 astd::function
时,我们需要提供一个具体类型,例如,
因此绑定到特定类型,
以下声明:
引发编译器错误。
我知道,从 c++14 开始,auto
可以用来存储 lambda 的返回值,但是在存储 lambda 时有没有办法实现这一点std::function
?
c++ - 用于修改 bool 类型向量(特殊容器)的 lambda 表达式中 auto 推导出的类型是什么
我想在std::vector<bool>
通过引用使用函数时更改一个变量的状态,但这不起作用,因为std::vector<bool>
它是一个代理对象。但是,当我尝试使用它进行更改时,lambda expression
我可以对其进行修改。这是一个例子:
我可以看到v[1]
已更改为false
. auto
我的问题是ofmodify_bool
和推导出的类型是什么b
?
c++ - lambdas 应该替换 C++ 中的函数模板吗?
在 C++ 中,我可以写:
输出:3 3.3 3.7
使用模板编写相同的代码:
看起来更复杂。这是否意味着 lambdas 可以替换函数模板?
c++ - 如何将模板 lambda 传递给函数并将其与不同类型一起使用
我使用宏从旧 C++ 时代继承了这段代码。我目前正在更换它,并且我正处于需要考虑一些构造的地步。
通常,我有这个:
几次。fun1()
根据fun2()
参数类型有一组不同的参数,我也可以有arg1
(arg2
真正的代码实际上有几层if
s ,每次都有不同的类型集,每个分支内还有几个额外的函数层)。
我想将这个因素考虑到一个可以采用这样的模板 lambda 的函数中:
现在,问题是这是模板化的,所以我不能把它变成 a std::function
,所以我不知道应该使用什么样的参数来创建我的函数:
C ++ 17中有这样的选项吗?甚至 C++20?
c++ - 计算 lambda 中的参数数量
我需要知道 lambda 具有的确切参数数量。我不关心他们的类型,我只需要计数。
检测可变参数 lambda 也很好,这样我也可以处理这种边缘情况。
我怎样才能得到这些信息?
c++ - c++,一个通用的递归模板函数,用于遍历树状结构
我尝试使用通用递归函数遍历树状结构,而无需每次为每个结构在全局中定义递归函数。
我用 CA 创建了一棵树
我可以使用这个宏来遍历这个结构,这可以与其他树状结构一起使用。
很难阅读,但效果很好,我像这样遍历 CA 的根
与其他结构一起使用,像这样
遍历 MyData 的根
这里有一个大问题。
我必须指定对象及其容器的类型,因为这里的 lambda 表达式是以递归形式定义的。
宏可以像模板函数一样推断类型吗?或者我应该以其他方式实现这一目标?
c++ - std::function 接受具有不同传递类型的参数的 lambda 函数(通过 ref,通过 val)
请看下面的代码
在代码示例中,我们有一个 std::function 分配了不同类型的 lambda。
我理解 lambda 3 因为函数签名匹配。
但是 lambda 1 创建了不同的函数签名,但编译正确。
Lambda 2 推断出错误的自动类型(通过 val 而不是通过 ref)并正确编译。
这是功能还是错误?我对函数类/ lambdas 和自动类型推断有什么误解?
更新:
感谢Handy999的回答,但是为什么以下内容没有编译呢?