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.