Если я не импортирую пространство имён
std
, а указываю нужные мне типы и функции явно, через префикс
std::
, то каким образом
std::operator>>
и
std::operator<<
оказываются в глобальном пространстве имён?
Поясню примером кода
#include <iostream>
int main()
{
int size;
// Как? Ведь std::operator>> определён в std, а мы его не импортировали
std::cin >> size;
}
И для сравнения
namespace My
{
std::istream &operator>>(std::istream &stream, int &n) { /*...*/}
}
int main()
{
int size;
// Как мы видим operator>> из My не влияет пока мы
//явно его не импортируем в глобальное пространство имён
std::cin >> size;
}
Что за магия с std ?