http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51897

             Bug #: 51897
           Summary: command line option to create a namespace alias
    Classification: Unclassified
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: P3
         Component: c++
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: danielgut...@gmail.com


In C, the compiler driver allows the 
  -Dxxx=yyy
option, so programs can be parameterized based on such definition.

In C++, we could do likewise with namespaces.

For example:

namespace Version1
{
    void f() { /* version 1 implementation */ }
    typedef int MyInt;
}

namespace Version2
{
    void f() { /* version 2 implementation */ }
    typedef long long int MyInt;
}

then, if we could have a namespace alias such as
    namespace NM = Version1;
we could happily do:
    NM::f();
    NM::MyInt myInt;

Therefore, I suggest to add a new command line option to the driver to define
namespace alias, a C++ counterpart of the C macro definition.

For example, we could do
   --namespace_alias NM=Version1
or alike when compiling stuff.
Yes, this can also be done with macros, but it's a cleaner preprocessor-free
choice.

Reply via email to