腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
(9999+)
视频
沙龙
1
回答
从
C++
中
的
std
::
function
访问
模板
化
的
lambda
、
、
、
我试图向我
的
lambda
添加一些插装,以便存储一些数据(即当
lambda
被触发时),但我在从
std
::函数检索
lambda
时遇到了一些问题。我创建了一个泛型functor来存储任何
lambda
和我
的
参数,然后我将这个functor存储到
std
::
function
中
。当我试图
从
std
::
function
访问
我
的
functor时,通
浏览 19
提问于2020-01-20
得票数 4
回答已采纳
2
回答
为什么编译器不能推断出这个函数
模板
呢?
、
、
、
、
函数有两个重载,它们
的
函数签名不同。error C2784: 'void foo(
std
::
function
<void(int,T)>)' : could not deduce template argument for '
std
::
function
C2784: 'void foo(
std
::
function
<void(T)>)' : could not deduce template argum
浏览 6
提问于2014-09-06
得票数 1
回答已采纳
2
回答
如何使用
模板
而不是宏绑定“this”?
、
、
、
我正在尝试用
模板
替换代码
中
的
所有宏。我有一个宏,它将this绑定为函数
的
第一个参数,以便成员函数可以在静态上下文中使用。如何使用
模板
实现这一目标?(func) [this](Event& e){ return func(e); }template<class T>#include <iostre
浏览 8
提问于2019-10-16
得票数 2
回答已采纳
1
回答
被忽略
的
候选
模板
:无法推断
模板
参数'U‘
、
、
我正在尝试创建一个类Vec,它包含方法map以返回一个新
的
Vec odject。我希望map方法可以返回不同
的
类型(比如Javascript
的
映射函数)。发现
的
错误如下: numbers.map([](int
lambda
)#include <iostream> #include
浏览 8
提问于2022-06-26
得票数 1
3
回答
为什么不能默认构造未捕获
的
lambdas,并且能够解决这个问题呢?
、
、
、
可以使用
lambda
的
类型作为
模板
参数,如class selfCompose {
Function
f;我们可以省略将
lambda
的
类型作为
模板
传递(将其转换为适当
的
std
::
function
(在多态丢失
的
情况下),但是
C++
lambda
浏览 10
提问于2012-11-16
得票数 5
回答已采纳
1
回答
可以将
模板
灯存储到
std
::
function
中
吗?
、
使用C++20,我们可以得到
模板
化
的
lambda
来做这样
的
事情: auto t = []<typename T>(T tmp){
std
::cout << tmp <<
std
::endl;};但是,如果我需要通过
std
::
function
<>指定确切
的
类型呢?是否可以将
模板
化
的
lambda
存
浏览 1
提问于2019-10-03
得票数 1
回答已采纳
2
回答
非静态数据成员初始
化
器
中
lambda
函数
的
分割故障
、
、
、
我不确定在从
lambda
函数初始
化
std
::
function
时是否存在GCC错误,在非静态数据成员初始
化
器
中
捕获this。这是
C++
标准允许
的
还是UB
的
?
std
::cout << a.x << "\n";据我理解,它应该打印1。但是,当使用GCC 5.4.0或GCC 6.2.0构建时,a.f(1)会发出分段错误,因为捕获
的
this指针为null。如我
浏览 0
提问于2016-09-21
得票数 20
5
回答
std
::函数无法区分重载函数
、
、
、
我试图理解为什么
std
::
function
不能区分重载
的
函数。我知道我可以通过使用
lambda
或指向实际函数
的
函数指针,然后将函数指针存储在函数
中
来解决这个问题。但为什么会失败呢?上下文不清楚我想要选择哪个函数吗?编辑-除了MSalters
的
答案,我在这个论坛上做了一些搜索,找到了失败的确切原因。我
从
纳瓦兹在这个上
的
答复
中
得到了答案。我
从
他
的
答案
中
得到了以下<em
浏览 3
提问于2015-05-22
得票数 39
回答已采纳
1
回答
将
lambda
传递给虚拟函数
、
、
通常,将
lambda
函子传递给方法
的
成语依赖于对参数
的
模板
化
:void apply(Functor f) f(stuff);但是,
C++
语言不支持虚拟声明
的
模板
参数。在此,问题是:没有简单
的
方法来定义处理某些
lambda
的
虚拟接口: virtual void apply(
Lambda
???)= 0;
浏览 6
提问于2021-12-09
得票数 2
1
回答
在
lambda
中
引用捕获
的
对象
的
生存期。
、
、
、
、
我有下面的
c++
代码。
Lambda
是通过引用捕获一个映射对象,并且能够在该映射对象
的
生命周期之后
访问
它。using VOID_VOID =
std
::
function
<void ()>;using FUN
浏览 1
提问于2020-03-01
得票数 1
回答已采纳
2
回答
使用
模板
函数类型与
std
::
function
的
区别
、
我很好奇为什么a2是好
的
,但是b2不会编译:#include <iostream> public:}; class
浏览 1
提问于2021-11-14
得票数 0
回答已采纳
1
回答
为什么我们不能用auto声明
std
::
function
、
、
<
std
::string>;auto
lambda
_1 = [](con1 auto functor){....}我希望前者工作
的
原因如下: template<
std
::semiregul
浏览 4
提问于2022-06-15
得票数 1
回答已采纳
1
回答
获取
lambda
的
功能原型
、
我正在创建一个通用
的
C++
EventEmitter。(有些有5个以上
的
参数)时就将整个监听器原型输入到
std
::
function
<...>
中
,然后我决定创建一个宏:问题是当我尝试与
lambda
一起使用它时:decltype(handler)不是void(int),而是class
lambda</e
浏览 2
提问于2017-11-25
得票数 1
回答已采纳
1
回答
删除函数签名类型
的
成员性?(λ
的
操作员())
、
、
、
我希望能够用封装
的
lambda
的
名称来实例
化
std
::
function
,而不是使用硬编码
的
签名:
std
::
function
<int(bool)> f(l); // XXX - don't want the type hardcoded
浏览 0
提问于2018-07-07
得票数 0
回答已采纳
1
回答
c++
映射容器[this] ()
、
、
、
我还知道,我们可以使用这些容器插入对,并可以通过.first和.second
访问
内容。foo1(classC::ID id); ClassB::Ptr someFunction(classC::ID id); //map } void ClassA
浏览 4
提问于2015-02-20
得票数 0
回答已采纳
1
回答
使用
模板
将
lambda
解析为函数
、
、
我对
C++
非常陌生,目前我正在努力学习如何为
lambda
函数使用
模板
。 auto a = predicate(2);
s
浏览 1
提问于2019-06-03
得票数 1
回答已采纳
2
回答
请求将
lambda
转换为非标量类型
、
、
、
我创建了这个类,这样我就可以有任何类型
的
值,该值在每次使用时都是固定
的
或重新计算
的
:class Value { bool fixed; T value; }; Value(const T&value) : fixed(true), value(value)
浏览 4
提问于2020-12-07
得票数 4
回答已采纳
2
回答
为什么c++11
中
的
lambda
函数没有
function
<>类型?
、
、
、
我正在尝试c++11
的
功能特性。我发现奇怪
的
一件事是,
lambda
函数
的
类型实际上不是
function
<>类型。更重要
的
是,
lambda
似乎并不能很好地处理类型推断机制。在这个例子
中
,addInt_f
的
类型是使用
function
<>显式定义
的
,而addInt_l是一个
lambda
,它
的
类型是使用auto进行类型推断
的
。所以
浏览 20
提问于2012-07-24
得票数 17
回答已采纳
5
回答
将lambdas作为
模板
参数传递:实际上推导出
的
是什么类型?
、
、
、
、
如果我将
lambda
作为
模板
参数传递,那么推导出
的
该参数
的
实际类型是什么?我之所以这样问,是因为我想传递一个
lambda
,然后从中创建一个内部
std
::
function
。请注意,这与相关,以及为什么我们必须使用CTAD来构造内部
std
::
function
,而不仅仅是将
模板
参数传递给
std
::
function
。我不确定这两种类型有什么不同,也不知道它们
从
传递到函数到
浏览 2
提问于2019-04-05
得票数 1
5
回答
通过引用接收
lambda
作为参数
的
适当方法
、
、
、
、
通过引用定义接收int->int
lambda
参数
的
函数
的
正确方法是什么?void f(
std
::
function
< int(int) >&
lambda
);void f(auto&
lambda
); 我不确定最后一种形式是法律语法。还有其他方法来定义
lambda
参数吗?
浏览 1
提问于2011-06-23
得票数 129
回答已采纳
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
C++20:核心语言
C+11及以上新特性大揭秘:现代化编程语言的必备利器
并发编程大放异彩:探究C+多线程编程的奇妙世界
你们以为我在学C加加?其实我在学Python!人生苦短!
C+23 特性概览
热门
标签
更多标签
云服务器
ICP备案
腾讯会议
云直播
对象存储
活动推荐
运营活动
广告
关闭
领券