#include <iostream> 

using namespace std;

class Base
{
public:
    virtual void fun()
    {
        cout<<"Base";
    }
};

class Der:public Base
{
    Base &pb;
    Der(Base& b) : pb(b) {}
public:
    static Der Decorate(Base&& b){ return Der(b); }
    virtual void fun()
    {
        cout<<"Der...";
        pb.fun();
    }
};
    
int main()
{
    Der::Decorate(Der::Decorate(Base())).fun();
    return 0;
}