2011-01-03 5 views

답변

3

수 없습니다. 완벽한 전달은 템플릿과 rvalue-references를 결합하여 작동합니다. 이는 T가 특수화 된 경우 실제 유형 T&&이 어떤 종류인지 평가하기 때문입니다. 템플릿과 가상 함수를 함께 사용할 수 없습니다.

struct base { 
    virtual void invoke() = 0; 
}; 

template <class T> 
struct derived : public base { 
    derived(T&& yourval) : m_value(std::forward(yourval)) {} 
    virtual void invoke() { /* operate on m_value.. */ } 

    T&& m_value; 
}; 
:

그러나 형식 삭제 메커니즘의 일종으로 문제를 해결할 수있을 수 있습니다

관련 문제