我的理解是,因为tt.get()是unnamed,引起了RVO; default capture里,实际上编译器认为所有被capture的也都是unnamed.
只有unnamed才能引起RVO
【 在 bihai 的大作中提到: 】
: 你是回他还是回我?ChatGPT的第三个方案居然可行
: Doit([tt=std::ref(t)]()->Test { return std::move(tt.get()); }); // 可以编译
: 如果不用的话,只是加上lambda返回类型,还是不行
: ...................
--
FROM 115.192.190.*