问题标签 [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 回答
281 浏览

c++ - 可变参数模板 lambda 参数的模板推导

给定以下可变参数模板:

现在,当fun使用 lambda 调用时,我需要明确指定所有 lambda 参数的类型。这似乎是多余的,因为int, int可以从 推导出来2, 3。有没有办法让它更简洁和自动化?

我希望以下工作,但它没有:

我正在使用g++ 5.4.0and进行编译-std=c++14

0 投票
2 回答
1437 浏览

c++ - 检查一个类型是一个函子,包括泛型 lambda

我可以编写一个特征元函数来确定一个类型是否是函子吗?有大量的代码可以使用 SFINAE 来检查函子decltype(&T::operator()),例如,

但是,这不适用于泛型 lambda,因为泛型 lambdaoperator()是一个模板函数。

有一些用于泛型 lambda 版本的有限情况的代码,它们对泛型 lambda 的参数类型进行了一些限制。例如,如果 lambda 表达式包含任何对成员访问操作等类型无效的表达式,则此处的答案 ( https://stackoverflow.com/a/5117641/2580815 ) 将不起作用。int

我不需要任何通用性。事实上,我只需要知道一个类型可以是一个只接受一个参数的函子。

我怎样才能实现我的is_functor

用例:

我正在尝试验证给定参数是否是模板函数的函子,也就是说,我想要一些重载的模板函数,例如:

0 投票
1 回答
432 浏览

qt - 可变信号和通用 lambda

是否可以创建可变参数信号并将通用 lambda连接为slot?我的意思是这样的(比如说,所涉及函数的所有定义在需要的地方都是可见的(例如在实例化点)):

目前它给出了一条错误消息:

AUTOGEN:错误:main.cpp 的进程:18:错误:模板函数作为信号或槽

moc失败了...

这里宏SLOT()而不是&A::infoMessage没有太大帮助。是否有任何解决方法可以克服此限制?

我知道,其中一些答案将包含使用 ofstd::make_tuplestd::index_sequence东西。但是有没有那么冗长的解决方案?

0 投票
4 回答
1587 浏览

c++ - 如何更改参数包中的最后一个参数?

我有一个功能f1()

我想从一个函数中调用它f2(),但最后一个参数不同。有简单的方法吗?我尝试了一个幼稚的

当然它不起作用,因为Head head不是第一个参数。也许还有一种方法可以制作Head head参数包?或者还有什么我可以做的吗?

0 投票
3 回答
78 浏览

c++ - 模板回调的包装器?

立即回拨

考虑以下示例:

在这里,我提供call_me_back了一个接受int. 经过长时间的计算后call_me_back调用,并将其打印出来。轻松如蛋糕。callbackcallback

现在,假设根据执行情况,call_me_back需要callback使用 anint或其他类型调用。我们可以将前面的示例编辑为

到目前为止,一切都很好。现在可以根据其类型callback进行各种技巧和处理。value

延迟回调

现在,回到第一个例子。说call_me_back没有准备好立即callbackint. 但是,它可以做的是存储某处callback,然后再调用它。

例如:

现在,不是立即调用,而是callback存储call_me_backcallback一个std :: function <void(const int &)>对象中(我知道,它在全局范围内,请耐心等待)。然后可能会发生很多事情,并且在某些时候有人可以调用ready_to_answer,它会检索先前存储的回调并调用它。例如,ready_to_answer可以由另一个线程调用,但是有很多原因需要这样的范例,回调可以存储并稍后调用。

问题

如果我想实现第二个示例,但使用延迟回调怎么办?. 我似乎无法理解这一点。

我可以想象这std :: function是使用接受某种特定类型的虚拟呼叫运算符实现的。然后std :: function包装一个指向模板包装类的指针/引用,该模板包装类存储实际的 lambda,并通过将其参数转发给它正在存储的 lambda 来实现调用运算符。好,易于。但我不能有模板虚拟方法!

我试过想出各种解决方案,但我找不到任何可以合理工作的方法。这真的不可能吗?是否不可能有一些外部提供的 lambda 接受const auto &存储在某处的参数,然后再调用它?

0 投票
2 回答
45 浏览

c++ - 从具有通用 lambda 的字符串中提取具有特定类型的元素

我正在使用 C++。我有可以包含以 开头^和结尾的元素的字符串$。该元素可以是intstring

例子:

我想编写 lambda 函数来做到这一点。如果我使用模板函数,代码将如下所示:

但是当我尝试使用通用 lambda 时,我遇到了这种情况:

问题是如何获得 retElem 的类型。在这种情况下有没有办法使用 lambda。我想在函数中使用通用 lambda,其中使用了这种提取。我只想将此逻辑封装在函数中。

0 投票
1 回答
210 浏览

c++ - 以静态大小的数组作为参数的通用 lambda

以下通用(多态)lambda 是否合法 C++14?

GCC 和 Clang 4 接受代码,但 Visual Studio 2017 不接受。合法吗?

0 投票
3 回答
405 浏览

c++11 - 如何将前 N 个参数传递给 C++ 函数

我有这样的功能:

问题是我不一定需要在我的回调函数中使用subjectand 。header现在我这样处理:

我想用

并自动将尽可能多的参数传递给回调函数。我不想loadData为所有 3 个可能的参数计数手动重载函数。我也不想在调用站点上使用任何更复杂的 lambda 语法,因为我的库应该清楚供其他人使用。这可能使用 C++ STL 和 Boost 吗?

0 投票
3 回答
1502 浏览

c++ - C++14:以通用 std::function 作为类成员的通用 lambda

考虑这个伪片段:

我想要的是一个fooCall存储通用 lambda 的类成员,它又在构造函数中分配。

编译器抱怨fooCall不能是模板化数据成员。

关于如何在类中存储通用 lambda 是否有任何简单的解决方案?

0 投票
3 回答
14399 浏览

c++ - c ++ lambdas如何从上层范围捕获可变参数包

我研究了通用 lambda,并稍微修改了示例,所以我的 lambda 应该捕获上层 lambda 的可变参数包。所以基本上给上 lambda as (auto&&...)- 的东西应该以某种方式在[=]块中捕获。

(完美转发是另一个问题,我很好奇这里有可能吗?)