Re: Конфликт имен: аргумента шаблона и у унаследованное
От: Masterkent  
Дата: 12.11.10 11:42
Оценка: 2 (1)
MescalitoPeyot:

MP>Вот-с, столкнулся с такой штукой, при совпадении имени параметра шаблона (здесь это B) с именем унаследованного локального класса VC выбирает локальный класс, а GCC — параметр.


Класс A::B — не локальный, а вложенный. В выражении B::f к B применяется обычный unqualified name lookup. При таком поиске искать имя B в зависимом базовом классе не разрешается:

14.6.2/3:
In the definition of a class template or a member of a class template, if a base class of the class template depends on a template-parameter, the base class scope is not examined during unqualified name lookup either at the point of definition of the class template or member or during an instantiation of the class template or member.

MP>Вопрос классический и по большому счету чисто теоретический: кто виноват


В данном случае VC++ не соблюдает требования стандарта.

MP> и что делать?


Поменять название параметра шаблона?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.