问题标签 [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++ - 带有 auto 参数的 lambda 是否有 std::function 类型或类似类型?
当我将 lambda 分配给显式类型的变量时(例如,当它是递归时,以捕获函数本身),我使用std::function
.
以这个愚蠢的“位计数”函数为例:
x
如 C++14 泛型 lambda 中介绍的那样,当我们使用 auto 参数进行泛化时,情况如何?
显然,我不能放入auto
类型function
参数。
是否有可能定义一个足以涵盖上述确切情况的仿函数类,但仍使用 lambda 进行函数定义?
(不要过度概括,只接受一个自动参数并对返回值进行硬编码。)用例将适用于上述场景:通过引用捕获函数本身以进行递归调用。
c++ - 带有 lambda 的 std::equal_range
假设我有一个字符串向量,我想找到所有以 开头的字符串,'a'
所以我可以这样做:
这种方法容易出错,因为容易出错(例如我认为它应该c < s.front()
在第二种方法中)并且有代码重复。
那么是否可以使用通用 lambda 而不是使用 2 种方法的结构来实现比较功能?
更一般的问题,为什么要比较的值必须作为参数传递给std::lower_bound
,std::upper_bound
什么std::equal_range
时候它可以很容易地被 lambda 捕获或传递给比较结构,那么这个问题就根本不存在了?
std::equal_range
如果不需要价值,它如何工作?
c++ - 头文件中的 C++14 通用 lambda
我有一组函子,如下所示:
将它们存储在头文件中是否正确?(有什么副作用吗?)
c++ - 泛型lambda,实参类型推导(auto)
考虑:
用法是:
这段代码因为 (X) 而编译失败,这当然是我可以理解的。我们不能将 const 引用绑定到右值引用。美好的。
有人可以解释一下lambda4
'sp
参数的实际类型是什么吗?在这里(Y),即使我将 const 引用参数传递给它,编译器也会编译它。
类型推导意义上的lambda2
和类型有什么区别?lambda4
c++ - 从通用 lambda 中检测参数类型 - 使用 GCC 编译错误
我编写了一些代码,在给定通用 lambda 函数时检索非自动参数的类型。正如您在下面的代码中看到的那样,想法是使用通用 lambda 调用 connect 函数并为自动参数提供参数(在我的用例中始终位于前面)。所以在下面的代码中,我的目标是检测第二个参数的类型是浮点数。
该代码适用于 clang 3.8,但它不能使用 gcc 6.1.1 编译,所以我想知道这是否是 gcc 中的一个错误,或者这是否只是无效的 c++ 代码?我可以假设通用 lambda 是使用模板化的 operator() 函数实现的,还是特定于编译器的?
gcc 给出的错误是这样的:
删除const
in findArgTypes 会得到相同的结果。
使用以下代码适用于两种编译器:
c++ - 为什么允许泛型 lambdas 而不允许使用模板化方法的嵌套结构?
据我了解 - 通用 lambda 被转换为带有模板的局部范围结构的对象operator()
。这使得通用 lambda 工具非常强大且易于使用。另一方面,当结构具有模板化成员时,可以创建嵌套到函数中的结构,例如:
或自行模板化:
编译器似乎在编译它时有问题:
和
我认为问题更多在于 c++ 标准而不是编译器错误。允许 lambda 具有模板化成员而不是本地结构的原因是什么?
我找到了这个 qustion,但我认为答案有点过时(我认为即使对于 c++11 也是如此)。
c# - c# 属性返回函数 - 从 lambda 中获取值
我有一个带有返回函数的属性的类。
如果我喜欢这样
如何将 a 的值分配给 lambda 中的目标变量,以便稍后在代码中重用它?
c++11 - 将可调用对象传递给构建某种多索引容器的对象
我正在尝试编写一个容器,该容器能够对对象进行分类并存储分类函数为真的指针。
我的问题是,它无法编译,并且由于我对std::function
or之类的可调用对象缺乏经验lambdas
,因此我不确定如何修复它。
我想要这样一个容器,因为我需要经常获取一些“类别”——这使得缓存结果变得容易。特别是在本例中,如果Dog
s 更改了它们的sound
,则可以简单地重新创建类别(因为可调用对象仍然存在)。
更重要的是,我对提供良好性能的解决方案感兴趣。正如我所读到的,std::function
s 不太可能是inline
d。有没有办法提供inline
d 性能?
编译器说:
这是我的代码:
c++ - 如何从泛型 lambda 中的可变参数包中获取类型?
我正在尝试编写一个函数,该函数将返回带有可变参数的通用 lambda,其中 lambda 会检查其中一个参数是否等于特定值。这是(大致)我正在尝试做的事情:
我不确定在std::tuple</* ??? */>
模板参数中放什么。我已经尝试过decltype(args)
, decltype(args...)
, auto
,auto...
和其他一些东西,但我不断收到编译器错误。这甚至可能吗?
非通用等价物将类似于:
这工作正常,但返回的 lambda 不是通用的 - 它不适用于任何任意参数包。