问题标签 [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++ - 使用静态局部变量获取绑定/推断捕获 lambda 的函数指针
是否可以使用静态局部变量获取捕获 lambda 的 C 样式函数指针?
我正在尝试将派生函数的第一个参数绑定到original
参数
使用:
编译失败 - 无法将闭包转换为函数指针
从包装 lambda 中删除参数包(通过更改以下行):
auto* function_ptr = +[](auto&&... args)
至auto* function_ptr = +[]()
return bound(std::forward<decltype(args)>(args)...);
至return bound();
成功编译并运行,尽管我假设通过使用可以在编译时在 lambda 上推断的参数包,不会导致该 lambda 成为这样的闭包(不可转换为函数指针,因为它需要语境)
我理想地试图实现:
whereoriginal
是类型void(*)(int, double)
并且entry_hook
可以将函数指针暴露给传入的 lambda
参考:
此答案将捕获 lambda 转换为函数指针C++ lambda,将捕获作为函数指针
这个答案将 lambda 转换为函数指针获取指向 lambda 的函数指针?
c++ - C++20模板lambas的限制和使用
C++ 标准大师的几个相关问题。
传入的 C++20引入了模板 lambdas ( P0428R2 )。
所以而不是
我们可以指定模板参数如下
到现在为止还挺好。
第一个问题:模板 lambdas 中的显式模板参数只能从参数推导,还是可以添加非推导的模板参数?
阅读 P0428r1 我没有看到任何明确的限制,但我也没有看到非推导模板参数的示例。
在第一个近似值中,我认为非推导模板参数是合法的,因为我看到以下愚蠢的代码
使用 g++(10.0.0 头)和 clang++(10.0.0 头)编译和运行。
假设允许非推导的模板参数,那么第二个问题是:如何在提供模板参数的同时调用模板 lambda?
例如:给定以下模板 lambda
在没有显式命名的情况下I
调用此类 lambda 时是否有一些语法用于指定模板参数?operator()
我试过了
但 the<
被解释为关系运算符。
我试过简单地添加template
但它不起作用。
c++ - c ++ lambda:Currying sum函数:使用按值捕获与按引用返回不同的结果
我有一个非常简单的递归 lambda,它计算给定 2 个数字的总和:
现在同样的功能,首先使用 arg 的引用捕获。
sum_v2
得到参数first
as2
并且 argsecond
也是2
.
我知道如何得到正确的结果。我可以使用 sum_v1 或 sum_v3(如下所示)。
How issum_v2
在创建 lambda 时,将 argfirst
视为 2。我很难理解这一点。
您能否给我一些提示以更好地理解这一点?我在 rhel 7 上使用带有 -std=c++17 的 gcc.9.2.0。
谢谢,高拉夫
c++ - lambda 作为模板函数中静态变量的一部分
假设我们S
在头文件中定义了一个包含 2 个成员(1 个 int 和 1 个 functor)的简单结构。我们在模板函数中创建一个这样的结构作为静态 const 变量,foo
并返回这个结构的 const 引用。在c ++ 17中合法吗?我尝试调用foo<int>
2 个翻译单元,它适用于 clang/gcc,但适用于 Visual Studio。使用 Visual Studio,第二个调用者返回错误m_n
(0 而不是 5)。
c++ - 在实现文件中使用头文件的通用 lambda
我在标题中有这种类型MyType.hpp
:
因此,someMethod
使用接受泛型参数的泛型 lambda 调用。是否有可能在MyType.cpp
for中提供一个实现someMethod
?这不起作用:
由于不允许部分特化(仅对函数模板进行完全特化),有没有其他方法可以将头文件的 lambda “传递”到实现文件MyType.cpp
?如果无法通过,是否存在一种动态存储此 lambdaMyType.hpp
并在其中访问它的方法MyType.cpp
?
python - 在 Python 中使用 Lambda 表达式进行情感分析
我正在尝试使用 TextBlob 在 Power BI 中执行情绪分析。我想使用 lamdba 表达式,因为它似乎比在 Power BI 中运行迭代循环要快得多。
例如,使用文本 Blob:
创建一个名为“极性分数”的 Power BI 数据列,其中包含来自 TextBlob 的数值。
我想对 TextBlob.classify() 函数做类似的事情。但是,我不知道如何将分类器的第二个参数传递给它。
教程展示了如何创建和使用分类器:
我试过了
和
两者都不起作用并指出我通过分类器的方式。如何在 lambda 表达式中传递分类器参数?
c++ - std::visit 不识别类型
我很困惑,经过一些代码重构后,以下代码不再起作用,因为它跳转到auto, auto
案例并忽略了该案例Complex, Complex
。诚然,我不太明白重载到底在做什么,但对我来说,这两个代码看起来完全一样,除了一个直接获取它的参数,而另一个具有在函数体本身中定义的参数。
代码打印
这是重构之前的工作代码:
我唯一能想到的是,它obj1
并不是obj2
真正想要的类型,但打印std::cerr
证明它们是。那么为什么 std::visit 不能识别它,我该如何解决呢?
c++ - 如何在 lambda 中调用 std::visit,访问者是由值捕获的函数对象
std::visit
使用作为值捕获的函数对象的访问者在 lambda中调用似乎并不简单。不过,通过引用捕获效果很好。为什么会这样,是否有可能做到这一点?
在这种情况下,我不理解来自 MSVC 2017 的编译错误消息:
std::visit': 找不到匹配的重载函数
无法专门化函数模板未知类型 std::visit(_Callable &&,_Variants &&...)
我假设模板参数推导的行为与仅在std::visit
没有包装调用的 lambda 的情况下调用非常相似。
说明问题的代码:
c++ - 递归调用包装函数时 lambda 函数的内部工作
考虑以下代码:
现在,在这段代码中,每当foo
递归调用函数时,都会将一个activation record
offoo
压入堆栈。我想知道的是,记录中是否包含 lambda 函数及其定义?嗯..这没有帮助
c++ - 如何获取泛型 lambda 的返回类型和参数类型?
我想获取 lambda 的返回类型和参数类型。 是否可以确定 lambda 的参数类型和返回类型?给出一个解决方案。但它不适用于通用 lambda。
那么如何解决它来获取泛型 lambda 的返回类型和参数类型呢?