This is simply illegal C++. At least one of the classes should be in unnamed
namespace { ... }
to not collide.
namespace { ... }
to not collide.