int main (int argc, char** argv) { Terminal t; t.func(); BoldDecorator bd(t); bd.func(); BarEndlineDecorator(bd).func(); }
int main (int argc, char** argv) { Terminal t; t.func(); auto bd = decor<BoldDecorator>(t); // smart way bd.func(); BoldDecorator<Terminal>(t).func(); // ugly way decor<BarEndlineDecorator>(bd).func(); // smart way BarEndlineDecorator< BoldDecorator<Terminal> >(bd).func(); // ugly way }