Mixin templates

customcanvas.C gives an example of creating a custom subclass of x::w::canvasObj::implObj and two mixin templates:

struct fore_color_tag;

class my_canvas_implObj : public x::w::scratch_and_mask_buffer_draw<
	x::w::background_color_elementObj<x::w::canvasObj::implObj,
					  fore_color_tag>> {


typedef x::w::scratch_and_mask_buffer_draw<
            x::w::background_color_elementObj<x::w::canvasObj::implObj,
					  fore_color_tag>> superclass_t;
// ...

       my_canvas_implObj( /* parameters */ )
            : superclass_t{ /* parameters */ }
// ...

LibCXXW's mixin templates follow this general design pattern:

The x::w::scratch_and_mask_buffer_draw template mixin's constructor requires one parameter. x::w::background_color_elementObj's constructor requires one. This means that my_canvas_implObj passes the following parameters to its parent class: