2011-01-03 24 views

Respuesta

3

No puede. El reenvío perfecto solo funciona al combinar plantillas y referencias rvalue, porque depende de qué tipo de tipo real se evalúe T&& cuando T esté especializado. No puede mezclar plantillas y funciones virtuales.

Sin embargo, puede puede ser capaz de resolver su problema por algún tipo de mecanismo de tipo de borrado:

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; 
}; 
Cuestiones relacionadas