2017-09-18 4 views
-2

다음 등급 고려하십시오. std::forward이 필요합니까?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__; 
    } 
} 
+7

왜 여기에'std :: forward'가 필요할 것이라고 생각하십니까? – NathanOliver

+2

저희에게 알려주십시오. 수업 중에 * 전달 * 참조가 있습니까? – StoryTeller

+2

그래서 철자를 기입하십시오 : 아니오. 적법한 참조를 전달하지 않을 것입니다. const 참조를 반환하고 있습니다. – sehe

답변

2
forward

조건부 이동 (이것은 <> 전달 유형 IFF 이동하는 r- 수치 값 또는 기준이다)이다.

해당 행에서 ContainerT을 이동할 위치는 없습니다.

따라서 forward이 아니어야합니다.

이것은 모든 조건부 이동이 전달이어야 함을 의미하지는 않지만 전달형이어서는 안되는 조건부 이동이 거의 없습니다.