2011-01-03 1 views

答えて

3

できません。完璧な転送は、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; 
};