2011-01-03 11 views

Antwort

3

Sie können nicht. Perfect Forwarding funktioniert nur durch die Kombination von Templates und Rvalue-Referenzen, denn es hängt davon ab, welche Art von realem Typ T&& auswertet, wenn T spezialisiert ist. Sie können Vorlagen und virtuelle Funktionen nicht mischen.

Sie können jedoch möglicherweise in der Lage, Ihr Problem durch eine Art von Typ-Löschmechanismus zu lösen:

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; 
}; 
Verwandte Themen