C++ 我需要转发吗? 请考虑下一节课。此处是否需要std::forward class Class1 { public: using ContainerT = std::map<Key,Value>; public: static ContainerT const& vibrometers(){ return vibrometers_(); // std::forward? } protected: static ContainerT & vibrometers_(){ static ContainerT vibrometers__; // no duplicate declaration in cpp return vibrometers__; } } Class1类 { 公众: 使用ContainerT=std::map; 公众: 静态容器常数和振动计(){ 返回测振仪();//标准::前进? } 受保护的: 静态容器和振动计 静态ContainerT振动计_;;//cpp中无重复声明 回程振动计; } }

C++ 我需要转发吗? 请考虑下一节课。此处是否需要std::forward class Class1 { public: using ContainerT = std::map<Key,Value>; public: static ContainerT const& vibrometers(){ return vibrometers_(); // std::forward? } protected: static ContainerT & vibrometers_(){ static ContainerT vibrometers__; // no duplicate declaration in cpp return vibrometers__; } } Class1类 { 公众: 使用ContainerT=std::map; 公众: 静态容器常数和振动计(){ 返回测振仪();//标准::前进? } 受保护的: 静态容器和振动计 静态ContainerT振动计_;;//cpp中无重复声明 回程振动计; } },c++,c++11,reference,C++,C++11,Reference,Aforward是一种条件移动(如果传入的类型是值或右值引用,则为移动) 在任何情况下,您都不会在该行上移动ContainerT 因此,您不应该转发 这并不意味着所有的条件移动都应该是向前的,但是很少有条件移动不应该是向前的。为什么你认为你需要std::forward?你告诉我们。你的类中有任何转发引用吗?那么,请详细说明:没有。你没有潜在地转发右值引用。您正在返回常量引用。

A
forward
是一种条件移动(如果传入的类型是值或右值引用,则为移动)

在任何情况下,您都不会在该行上移动
ContainerT

因此,您不应该
转发


这并不意味着所有的条件移动都应该是向前的,但是很少有条件移动不应该是向前的。

为什么你认为你需要
std::forward
?你告诉我们。你的类中有任何转发引用吗?那么,请详细说明:没有。你没有潜在地转发右值引用。您正在返回常量引用。