On Mon, Sep 11, 2017 at 10:37 AM, Robert Ramey via Boost < boost@lists.boost.org> wrote:
Because we only define things inside std that we are explicitly granted
permission to (such as specializations of specific stand library types).
Right. But why do "we" do this.
Because the standard says so. See [namespace.std]. When this is violated, well, it's why we can't have nice things. As a user, well, you've invoked undefined behavior. The standard needs a place where it owns all the names.
What problem might violating such a permission cause?
Ever wonder why there is no std::hash_map (with that spelling)? Because vendors used to put their hash_map into namespace std, neither of which was quite compatible with the unordered_map eventually shipped in C++11. It is very deceiving to pretend you are part of the standard when you are not. -- Nevin ":-)" Liber mailto:nevin@eviloverlord.com +1-847-691-1404