问题标签 [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 参数的模板推导
给定以下可变参数模板:
现在,当fun
使用 lambda 调用时,我需要明确指定所有 lambda 参数的类型。这似乎是多余的,因为int, int
可以从 推导出来2, 3
。有没有办法让它更简洁和自动化?
我希望以下工作,但它没有:
我正在使用g++ 5.4.0
and进行编译-std=c++14
。
c++ - 检查一个类型是一个函子,包括泛型 lambda
我可以编写一个特征元函数来确定一个类型是否是函子吗?有大量的代码可以使用 SFINAE 来检查函子decltype(&T::operator())
,例如,
但是,这不适用于泛型 lambda,因为泛型 lambdaoperator()
是一个模板函数。
有一些用于泛型 lambda 版本的有限情况的代码,它们对泛型 lambda 的参数类型进行了一些限制。例如,如果 lambda 表达式包含任何对成员访问操作等类型无效的表达式,则此处的答案 ( https://stackoverflow.com/a/5117641/2580815 ) 将不起作用。int
我不需要任何通用性。事实上,我只需要知道一个类型可以是一个只接受一个参数的函子。
我怎样才能实现我的is_functor
?
用例:
我正在尝试验证给定参数是否是模板函数的函子,也就是说,我想要一些重载的模板函数,例如:
qt - 可变信号和通用 lambda
是否可以创建可变参数信号并将通用 lambda连接为slot?我的意思是这样的(比如说,所涉及函数的所有定义在需要的地方都是可见的(例如在实例化点)):
目前它给出了一条错误消息:
AUTOGEN:错误:main.cpp 的进程:18:错误:模板函数作为信号或槽
moc失败了...
这里宏SLOT()
而不是&A::infoMessage
没有太大帮助。是否有任何解决方法可以克服此限制?
我知道,其中一些答案将包含使用 ofstd::make_tuple
和std::index_sequence
东西。但是有没有那么冗长的解决方案?
c++ - 如何更改参数包中的最后一个参数?
我有一个功能f1()
我想从一个函数中调用它f2()
,但最后一个参数不同。有简单的方法吗?我尝试了一个幼稚的
当然它不起作用,因为Head head
不是第一个参数。也许还有一种方法可以制作Head head
参数包?或者还有什么我可以做的吗?
c++ - 模板回调的包装器?
立即回拨
考虑以下示例:
在这里,我提供call_me_back
了一个接受int
. 经过长时间的计算后call_me_back
调用,并将其打印出来。轻松如蛋糕。callback
callback
现在,假设根据执行情况,call_me_back
需要callback
使用 anint
或其他类型调用。我们可以将前面的示例编辑为
到目前为止,一切都很好。现在可以根据其类型callback
进行各种技巧和处理。value
延迟回调
现在,回到第一个例子。说call_me_back
没有准备好立即callback
用int
. 但是,它可以做的是存储某处callback
,然后再调用它。
例如:
现在,不是立即调用,而是callback
存储call_me_back
在callback
一个std :: function <void(const int &)>
对象中(我知道,它在全局范围内,请耐心等待)。然后可能会发生很多事情,并且在某些时候有人可以调用ready_to_answer
,它会检索先前存储的回调并调用它。例如,ready_to_answer
可以由另一个线程调用,但是有很多原因需要这样的范例,回调可以存储并稍后调用。
问题
如果我想实现第二个示例,但使用延迟回调怎么办?. 我似乎无法理解这一点。
我可以想象这std :: function
是使用接受某种特定类型的虚拟呼叫运算符实现的。然后std :: function
包装一个指向模板包装类的指针/引用,该模板包装类存储实际的 lambda,并通过将其参数转发给它正在存储的 lambda 来实现调用运算符。好,易于。但我不能有模板虚拟方法!
我试过想出各种解决方案,但我找不到任何可以合理工作的方法。这真的不可能吗?是否不可能有一些外部提供的 lambda 接受const auto &
存储在某处的参数,然后再调用它?
c++ - 从具有通用 lambda 的字符串中提取具有特定类型的元素
我正在使用 C++。我有可以包含以 开头^
和结尾的元素的字符串$
。该元素可以是int
或string
。
例子:
我想编写 lambda 函数来做到这一点。如果我使用模板函数,代码将如下所示:
但是当我尝试使用通用 lambda 时,我遇到了这种情况:
问题是如何获得 retElem 的类型。在这种情况下有没有办法使用 lambda。我想在函数中使用通用 lambda,其中使用了这种提取。我只想将此逻辑封装在函数中。
c++ - 以静态大小的数组作为参数的通用 lambda
以下通用(多态)lambda 是否合法 C++14?
GCC 和 Clang 4 接受代码,但 Visual Studio 2017 不接受。合法吗?
c++11 - 如何将前 N 个参数传递给 C++ 函数
我有这样的功能:
问题是我不一定需要在我的回调函数中使用subject
and 。header
现在我这样处理:
我想用
并自动将尽可能多的参数传递给回调函数。我不想loadData
为所有 3 个可能的参数计数手动重载函数。我也不想在调用站点上使用任何更复杂的 lambda 语法,因为我的库应该清楚供其他人使用。这可能使用 C++ STL 和 Boost 吗?
c++ - C++14:以通用 std::function 作为类成员的通用 lambda
考虑这个伪片段:
我想要的是一个fooCall
存储通用 lambda 的类成员,它又在构造函数中分配。
编译器抱怨fooCall
不能是模板化数据成员。
关于如何在类中存储通用 lambda 是否有任何简单的解决方案?
c++ - c ++ lambdas如何从上层范围捕获可变参数包
我研究了通用 lambda,并稍微修改了示例,所以我的 lambda 应该捕获上层 lambda 的可变参数包。所以基本上给上 lambda as (auto&&...)
- 的东西应该以某种方式在[=]
块中捕获。
(完美转发是另一个问题,我很好奇这里有可能吗?)