Сообщение Re[2]: using namespace std; от 18.10.2019 5:13
Изменено 18.10.2019 5:20 rg45
Re[2]: using namespace std;
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>У меня есть вопрос по этой теме.
КД>Как без "using namespace std" находятся свободные операторы сравнения (==, !=, ...) для классов определенных в пространстве std?
КД>Например, для std::string.
Есть такой механизм, Argument Dependent Lookup (ADL). Когда компилятор видит в коде вызов функции, он ищет кандидатов на подставновку, в том числе и в пространствах имен формальных параметров. Это также относится и к операторам, поскольку они и есть функции по сути. В стандарте языка это описано в пункте 6.4.2 Argument-dependent name lookup.
Хорошо и подробно описано здесь:
https://en.cppreference.com/w/cpp/language/adl
Также полезно почитать:
http://programming-lang.com/ru/comp_programming/satter/0/j118.html
КД>У меня есть вопрос по этой теме.
КД>Как без "using namespace std" находятся свободные операторы сравнения (==, !=, ...) для классов определенных в пространстве std?
КД>Например, для std::string.
Есть такой механизм, Argument Dependent Lookup (ADL). Когда компилятор видит в коде вызов функции, он ищет кандидатов на подставновку, в том числе и в пространствах имен формальных параметров. Это также относится и к операторам, поскольку они и есть функции по сути. В стандарте языка это описано в пункте 6.4.2 Argument-dependent name lookup.
Хорошо и подробно описано здесь:
https://en.cppreference.com/w/cpp/language/adl
Также полезно почитать:
http://programming-lang.com/ru/comp_programming/satter/0/j118.html
Re[2]: using namespace std;
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>У меня есть вопрос по этой теме.
КД>Как без "using namespace std" находятся свободные операторы сравнения (==, !=, ...) для классов определенных в пространстве std?
КД>Например, для std::string.
Есть такой механизм, Argument Dependent Lookup (ADL). Когда компилятор видит в коде вызов функции, он ищет кандидатов на подставновку, в том числе и в пространствах имен фактических параметров. Это также относится и к операторам, поскольку они и есть функции по сути. В стандарте языка это описано в пункте 6.4.2 Argument-dependent name lookup.
Хорошо и подробно описано здесь:
https://en.cppreference.com/w/cpp/language/adl
Также полезно почитать:
http://programming-lang.com/ru/comp_programming/satter/0/j118.html
КД>У меня есть вопрос по этой теме.
КД>Как без "using namespace std" находятся свободные операторы сравнения (==, !=, ...) для классов определенных в пространстве std?
КД>Например, для std::string.
Есть такой механизм, Argument Dependent Lookup (ADL). Когда компилятор видит в коде вызов функции, он ищет кандидатов на подставновку, в том числе и в пространствах имен фактических параметров. Это также относится и к операторам, поскольку они и есть функции по сути. В стандарте языка это описано в пункте 6.4.2 Argument-dependent name lookup.
Хорошо и подробно описано здесь:
https://en.cppreference.com/w/cpp/language/adl
Также полезно почитать:
http://programming-lang.com/ru/comp_programming/satter/0/j118.html