When using macros for namespaces the "move implementation" somehow messes it up. I know that a tough one to solve
example:
#define BEGIN_MYNAMESPACE namespace x { namespace y {
#define END_MYNAMESPACE } }
Now, moving a function from the .h to the .cpp file will produce this:
(.h file)
BEGIN_MYNAMESPACE
class test
{
... some other functions
void function1() { return; }
}
END_MYNAMESPACE
(.cpp file)
BEGIN_MYNAMESPACE
test::function0()...
test::ctor() ...
test::dtor()...
END_MYNAMESPACE
void x::y::function1()
{
return;
}
You can see that VAX correctly knows the full namespace, thus it expands it and prepends it to the function. But it takes it out of the real context.