0

We're attempting to hide a class behind a new namespace, however we'd like to keep the original name.

namespace first {
    class Logger { ... };
}

namespace second {
    using Logger = first::Logger;
}

error: definition of type 'Logger' conflicts with type alias of the same name class Logger;

Ben Crowhurst
  • 8,204
  • 6
  • 48
  • 78

2 Answers2

1

Yes we can:

namespace first {
  class Logger {  };
}

namespace second {
  typedef first::Logger Logger;
}

typedef is apparently equivalent to using (in C++11), just more wieldy.

Community
  • 1
  • 1
1

Right-o, this was due to a forward declaration of type class Logger within our own codebase.

namespace first {
    class Logger { ... };
}

namespace second {
    using Logger = first::Logger;

    ... some time later ...
    class Logger;
}
Ben Crowhurst
  • 8,204
  • 6
  • 48
  • 78