2015-10-27 1 views
0

§ 3.5 [basic.link]/3 (курсив мой):Я считаю, что фраза «не ранее объявившие иметь внешнюю связь» является излишним, в п.3.5/3 очка пули (3.2) в N4140

имя пространства имен, имеющий сферу (3.3.6) имеет внутреннюю связь, если это название

(3.1) - переменная, функция или шаблон функции, что явно объявлена ​​статическая; или,

(3,2) - энергонезависимая переменная , которая явно объявлена ​​Const или constexpr и ни явно объявлено ехЬегп , ни заявленные ранее, чтобы иметь внешнюю связь; или

(3.3) - член данных анонимного объединения.

Я считаю, что фраза в (3,2), выделены жирным шрифтом, чтобы быть излишним, если кто-то может дать пример переменной, которая явно объявлена ​​const, но не объявлен extern, и который ранее был объявлен иметь external linkage, и такая, что результирующая переменная имеет external linkage.

+5

Можете ли вы сформулировать это как вопрос? – Brian

ответ

5

Это легко:

extern const int i; // typically in header file 
const int i = 0; // typically in source file 

Приговор в вашем вопросе делает, что нет никакого противоречия. Во втором объявлении не указывается другая несовместимая связь, она просто наследует связь от предыдущей декларации, и это слова в вашем вопросе, которые достигают этого.

+0

Отлично. Я об этом не думал (+1). – Leon