Como colocar algum código em vários espaços para nome sem duplicar esse código?

Suponha que eu tenha o método definido nos dois namespaces diferentes:

namespace foo
{
    void print()
    {
        //do work...
    }
}

namespace bar
{
    void print()
    {
        //do work...
    }
}

ofoo::print() e abar::print() funções sãoabsolutamente igual. Meu projeto utiliza as inúmeras chamadas dessas funções.

Existe uma maneira de remover um dosprint() definiçõessem alterar as chamadas dessas funções? Quero dizer algo como o seguinte (é claro, a linguagem C ++ não permite essa construção,é apenas um exemplo):

namespace foo, bar  //wrong code!
{
    void print()
    {
        //do work...
    }
}

Se não houver como refatorar o código como eu quero, diga-me, você gosta da seguinte decisão? Você ficará feliz seseu projeto contém esse código? :)

namespace foo
{
    void print()
    {
        //do work...
    }
}

namespace bar
{
    void print()
    {
        foo::print();
    }
}

ADICIONAR, ACRESCENTAR:

Obrigado pessoal, estou totalmente satisfeito com suas respostas. Apenas um momento, quero que você esclareça: há uma diferença entreusing ::foo::print eusing foo::print?

questionAnswers(5)

yourAnswerToTheQuestion