https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90291

--- Comment #7 from Igor A. Goussarov <igusarov at mail dot ru> ---
The intent is to have a lot of services, each defined in its dedicated
namespace. The hierarchy of those namespaces can grow to arbitrary depth:

component
component::service_a
component::group_b::service_c
component::group_b::service_d
component::third_party::domain::service_e

Each service may have header-only public part and private part. Private part
must be placed in namespace `detail` under the namespace of its corresponding
service. So we have:

component::detail
component::service_a::detail
component::group_b::service_c::detail
component::group_b::service_d::detail
component::third_party::domain::service_e::detail

Now, if some team decided to put their service in an inline namespace (say, if
their service is common enough), the identity of detail namespaces is ruined
because they start merging with each other, subject to the order of header
files inclusion. And that leads to ODR violation and weird linker errors...

Reply via email to