2011-01-03 37 views

Trả lời

3

Bạn không thể. Chuyển tiếp hoàn hảo chỉ hoạt động bằng cách kết hợp các mẫu và tham chiếu rvalue, bởi vì nó phụ thuộc vào loại thực tế T&& đánh giá khi T là chuyên biệt. Bạn không thể trộn mẫu và chức năng ảo.

Tuy nhiên, bạn có thể có thể có thể giải quyết vấn đề của bạn bằng một số loại cơ chế kiểu tẩy xoá:

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; 
}; 
Các vấn đề liên quan