Re[8]: Статические элементы-данные шаблонных классов
От: achp  
Дата: 11.10.04 07:31
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш>А у меня, кстати, вопрос есть на эту тему.


Ш>
Ш>const int IntConst=12345;

Ш>inline void Fun( void (*f)(const int &) ) { f(IntConst); }
Ш>


Ш>Вот такая последовательность деклараций, помещённая в заголовочный файл, который в свою очередь включен в несколько единиц трансляции.


Ш>Есть ли здесь прямое нарушение ODR, или такое нарушение только потенциальное?


По-моему, 3.2(5) достаточно ясно отвечает на этот вопрос: здесь есть нарушение ПОО.

...
— в каждом определении D соответственные имена будут, по результатам сопоставления в соответствии с §3.4, отсылать к сущности, определенной внутри определения D, или к одной и той же сущности по результатам разрешения перегрузки имени (§13.3) и после подбора частичной специализации шаблона (§14.8.3), за исключением того, что имя может отсылать к константному (const) объекту со внутренней компонуемостью или без компонуемости, если последний имеет один и тот же целочисленный или перечислимый тип во всех определениях D, определен при помощи константного выражения (§5.19) и используется значение (но не адрес) этого объекта и значение объекта одинаково во всех определениях D...

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