AMDG Peng Yu wrote:
A generic multiply_traits is not tied to any specific type. You can always put it in a detail namespace.
Suppose everything in B of my original code is from a library called B. Other codes are for the use of library B.
Do you mean that all multiply_traits shall be defined in a namespace such as B::detail?
Yes. In template libraries you often need namespace scope helper classes and functions that should not be visible to the user.
When new classes X1, X2, ... are defined, I need to define the corresponding multiply_traits in B::detail. If the library B (with namespace B) is designed such that nothing is defined in namespace B::detail, then the users can define whatever they want in B::detail, as there would be no conflicting between their code and the library code, right?
They could, in that the language does not forbid it, but I would consider it a bad idea to put user code in a namespace nested within a library's namespace. In Christ, Steven Watanabe