static si está en plano C ++?

Problema en resumen:
¿Cómo podría uno implementarstatic if funcionalidad, propuesta en c ++ 11, en simple c ++?

Historia y problema original:
Recientemente se me ocurrió un problema como este. Necesito una claseSender con una interfaz como

class Sender
{
   void sendMessage( ... );
   void sendRequest( ... );
   void sendFile( ... );
   // lots of different send methods, not important actually
}

En algunos casos necesitaré crear una DoubleSender, es decir, una instancia de esta clase, que llamaría a sus métodos dos veces, es decir, al llamar, digamos, unsendMessage(...) método, el mismo mensaje debe enviarse dos veces.

Mis soluciones:
Primer enfoque
Tienen unaisDouble member, y al final de cada llamada al método, marque

sendMessage(...) { ... if( isDouble ) { sendMessage( ... ); }

Bueno, no quiero esto, porque en realidad necesitaré una doble publicación muy recientemente, y esta parte del código en la sección de tiempo crítico será 98% pasiva.

Segundo enfoque:
Heredar una claseDoubleSender desdeSender e implementa sus métodos como:

void DoubleSender::sendMessage( ... )
{
   Sender::sendMessage(...);
   Sender::sendMessage(...);
}

Bueno, esto es aceptable, pero ocupa mucho espacio de código desagradable (realmente, porque hay muchas @ diferentsend.. métodos

Tercer enfoque:
Imagina que estoy usando c ++ 11 :). Entonces puedo hacer que esta clase sea genérica y producir la parte necesaria del código de acuerdo con el argumento tempalte usandostatic if:

enum SenderType { Single, Double };
template<SenderType T>
class Sender
{
   void sendMessage(...)
   {
      // do stuff
      static if ( T == Single )
      {
         sendMessage(...);
      }
   }
};

Esto es más corto, más fácil de leer que las soluciones anteriores, no genera código adicional y ... es c ++ 11, que desafortunadamente no puedo usar en mi trabajo.

Entonces, aquí es donde llegué a mi pregunta: ¿cómo puedo implementarstatic if analógico en c ++?
Además, agradecería cualquier otra sugerencia sobre cómo resolver mi problema original.
Gracias por adelantado

Respuestas a la pregunta(8)

Su respuesta a la pregunta