2012-03-23 2 views
1

je le code suivant je suis refactoring:Un alias d'espace de noms imbriqué C++ est-il possible?

namespace Foo 
{ 
    namespace Bar { ...classes... } 
} 

Bar est maintenant dans un nouvel espace de noms haut niveau, mais I'ld aiment garder la compatibilité API:

namespace Pi { ...classes... } // refactored Foo::Bar 
namespace Foo { namespace Bar = Pi; } // API compatibility 

Ce doesn ne fonctionne pas, car il alias Foo :: Bar :: Class en Foo :: Pi :: Class, mais pas Pi :: Class. Existe-t-il un moyen (à court d'une macro ou typedef'ing tout Pi classé) pour réaliser ce que je veux?

Répondre

2

Si je comprends bien, cela devrait faire ce que vous avez besoin. Cela signifie que toute recherche dans Foo::Bar trouvera des noms dans ::Pi.

namespace Pi {} 
namespace Foo { namespace Bar { using namespace Pi; } } 

Évidemment, cela ne préserve pas la compatibilité binaire.

+0

Doh, c'était trop évident! Merci. – eile

1

Oops, vous le voulez dans l'autre sens:

namespace Foo { 
    namespace Bar { 
    using namespace Pi; 
    } 
} 
Questions connexes