The behavior of a C++ program is undefined if it adds declarations or definitions to namespace
std
or to a namespace within namespace
std
unless otherwise specified
. A program may add a template specialization for any standard library template
to namespace
std only if the declaration
depends on a user-defined type
and the specialization meets the standard library requirements
for the original template and is not explicitly prohibited
.