Re[7]: ADL. Кто неправ я, компилятор или реализация STL
От: shank  
Дата: 21.10.06 17:17
Оценка:
Здравствуйте, Kazmerchuk Pavel, Вы писали:

KP>У Вандервуда с Джосаттисом: "Если при обычном поиске будет найдено имя функции-члена или имя типа, то ADL не применяется."


KP>
KP>_Myt operator+(difference_type _Off) const
KP>

KP> как раз является членом std::vector<...>::iterator. Как это объяснить?
В том и дело, что имя функции-члена не было найдено, а найдено было выражение begin() + _Newsize.
Как интерпретируются такие выражения расписано в 13.3.1.2/2

For a unary operator @ with an operand of a type whose cv-unqualified version is T1, and for a binary operator
@ with a left operand of a type whose cv-unqualified version is T1 and a right operand of a type whose
cv-unqualified version is T2, three sets of candidate functions, designated member candidates, non-member
candidates and built-in candidates
, are constructed as follows:
...

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.