имена в пространстве имен std

Автор admin Среда, 20 мая 2009 11:32

имена в пространстве имен std должны 1 Так называемое правило Кёнига, по имени Эндрю Кёнига (Andrew Koenig), который первым предложил эту методику комитету по стандартизации С++. ADL применяется как при наличии шаблонов, так и без них. Разрешение имен 219 объявляться с префиксом std::. Однако некоторые элементы из пространства имен std остались неуточненными. Видите, какие именно? Не указано, какие операторные функции должны использоваться в программе. Мы хотим, чтобы происходило следующее: std:: operator«( std:: operator«( std:: cout. s). std:: endl): Но вводить эту конструкцию совершенно не хочется! Исходная команда вывода работает именно так, как мы хотим, благодаря механизму ADL. Если в программе присутствует неуточненный вызов функции, объявление которой отсутствует в обычной области видимости, то поиск подходящих объявлений функций производится в пространствах имен каждого из ее аргументов. В исходной команде первой вызывается функция operator«(std:: cout. s): Поскольку такая функция отсутствует в области видимости исходного фрагмента, компилятор замечает, что первый аргумент функции (std::cout)


Комментарии закрыты.