![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Aveic |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 9.2.2006 Где: Да все мы из одно й ямы Репутация: нет Всего: нет |
Вообщем в книге Герба Саттера есть такой пример, демонстрирующий Поиск Кенига.
Так вот в книге написано, что такой код не скомплириется, т.к. при вызове B::g(A::X) по правилу Кенига становиться достпной область видимости пространства имен A, т.к. тип аргументу принадлежит именно этому пространству имен. Вседствие этого в данном месте определены две функции с одинаковой сигнатурой, что приведет к неодназночности, а значит к ошибке. Однако, на моем компиляторе MS Visual C++ 6.0 все работает, и вызов B::g(A::X) приводит к бесконечной рекурсии. Что это может означать? - Может мой компилятор не поддерживает правило поиска Кенига? - Или может просто компилятор надо настроить соответствующим образом? - Или компилятор слишком, старый и тогдашний С++ не поддерживал поиска Кенига? Подскажите пожалуйста. |
|||
|
||||
| LPBOY |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 12.7.2005 Репутация: 20 Всего: 20 |
MS VC6.0 поддерживает поиск Кенига только для операторов, но не для обычных функций.
Добавлено @ 22:38 Проверь на Comeau on-line. Такой код:
не компилируется из-за неоднозначности. А если имя функции взять в скобки (т.е. отключить ADL), то компилируется успешно.
--------------------
Каждый человек по-своему прав, а по-моему нет... |
||||
|
|||||
| Aveic |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 9.2.2006 Где: Да все мы из одно й ямы Репутация: нет Всего: нет |
спасибо
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |