
"Robert" == Robert Ramey <ramey@rrsd.com> writes:
Robert> Jeffrey Faust wrote: >>> In regards to extending namespace std, I understand what the >>> standard says and I think I understand the reasons behind it. >>> One could add something to namespace std that conflicts with an >>> existing item, changing the behavior. This is undefined >>> behavior, and the standard is right in restricting it. I don't >>> believe this problem exists for this library in how we plan to >>> extend std. Robert> How can anyone possibly know that? That is, how could two Robert> different developers who didn't know each other possibly Robert> know that they weren't going to conflict? Robert> Of course if you wanted to officially extended the namespace Robert> that would be a different thing entirely. It is more than conflict: the C++ standard fully defines the content of std and compilers are not required to implement it as they implement other namespaces, as long as they behave as if such a namespace was defined. In particular, turning the entire namespace std { } block into a compiler-time nop is entirely ok. Not that this happens with any of the presently available compilers, but it could. On the other hand, if we can get some nice functionality that cannot be achieved otherwise, I wouldn't have too many problems with being pragmatic and extending std. If it becomes very useful, it might be accepted into the standard or additional mechanisms not relying on extending std may be provided. Best regards, Maurizio