Manipulador personalizado para clase

Estoy tratando de escribir un manipulador de flujo con argumentos. Tengo clase con 3 int's CDate (año, mes, día). Entonces necesito hacer manipuladordate_format(const char*). p.ej. :

CDate a(2006, 5, 15);
cout <<"DATE IS : " << date_format("%Y-hello-%d-world-%m-something-%d%d") << a;

La salida será:

DATE IS : 2006-hello-15-world-5-something-1515

Supongo que necesito usar eso

ios_base & dummy_date_format_manipulator ( ios_base & x )
{
    return x;
}

ios_base & ( * ( date_format ( const char * fmt ) ) )( ios_base & x )
{
    return dummy_date_format_manipulator;
}

Pero no sé cómo.