我需要std :: forward吗?

时间:2017-09-18 15:48:58

标签: c++ c++11 reference

请考虑下一堂课。这里需要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__;
    }
}

1 个答案:

答案 0 :(得分:2)

forward是条件移动(如果在<>中传递的类型是值或右值引用,则移动它。)

在这条线上没有移动ContainerT的情况。

所以你不应该forward

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