estatic se estiver em c ++ simple

Problem em suma:
Como alguém poderia implementarstatic if funcionalidade, proposta em c ++ 11, em c ++ simple

História e problema original:
Recentemente, eu vim com um problema como este. Eu preciso de uma aulaSender com uma interface como

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

Em alguns casos, precisarei criar um DoubleSender, ou seja, uma instância desta classe, que chamaria seus métodos duas vezes, ou seja, ao chamar, digamos, umsendMessage(...), a mesma mensagem deve ser enviada duas veze

Minhas soluções:
Primeira abordagem
Tem umisDouble member e, no final de cada chamada de método, marque

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

Bem, eu não quero isso, porque na verdade vou precisar de postagem dupla muito recentemente, e essa parte do código na seção de tempo crítico será 98% passiv

egunda abordagem:
Herdar uma classeDoubleSender a partir deSender e implemente seus métodos como:

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

Bem, isso é aceitável, mas ocupa muito espaço de código desagradável (realmente, porque existem muitas variáveis diferentessend.. métodos

erceira abordagem:
Imagine que estou usando c ++ 11 :). Então eu posso tornar essa classe genérica e produzir a parte necessária do código de acordo com o argumento tempalte usandostatic if:

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

Este é mais curto, mais fácil de ler do que as soluções anteriores, não gera código adicional e ... é c ++ 11, que infelizmente não posso usar no meu trabalh

Então, aqui é onde eu vim à minha pergunta - como posso implementarstatic if analógico em c ++?
Além disso, gostaria de receber outras sugestões sobre como resolver meu problema origina
Desde já, obrigado

questionAnswers(8)

yourAnswerToTheQuestion