https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67566
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Roman Koptev from comment #2) > That'is if I compile any program with the option -std=c++14, after including > <string> (may be and other headers) std::move surely and always is in global > namespace, available without std:: or using std or using std::move and this > is surely abnormal. No it isn't in the global namespace, it's in namespace std as required by the C++ standard. What's happening is called Argument Dependent Lookup and is perfectly normal. http://en.cppreference.com/w/cpp/language/adl https://en.wikipedia.org/wiki/Argument-dependent_name_lookup http://stackoverflow.com/questions/8111677/what-is-argument-dependent-lookup-aka-adl-or-koenig-lookup