MM
Size: a a a
MM
AD
MM
MM
AD
AD
MM
MM
MM
AD
MM
MM
MM
AD
export constexpr T x = value;
MM
export constexpr int ec = 18;
и const std::string str = "abc";
. С ес всё понятно, она экспортится, у неё external linkage. А вот с str не очень. Я её использую в других единицах трансляции этого модуля - в impl1 и impl2. Т.е. у неё явно module linkage. НО. Из стандарта вроде бы следует, что должен быть internal: http://eel.is/c++draft/basic.link#3 потому что она "a non-template variable of non-volatile const-qualified type". В следующем абзаце идут ещё правила, но только для "name having namespace scope that has not been given internal linkage above". А мы для неё уже получили internal linkage above. Собственно вопрос. Это просто кланг пока работает не по стандарту, или это я не умею его читать?AD
export constexpr int ec = 18;
и const std::string str = "abc";
. С ес всё понятно, она экспортится, у неё external linkage. А вот с str не очень. Я её использую в других единицах трансляции этого модуля - в impl1 и impl2. Т.е. у неё явно module linkage. НО. Из стандарта вроде бы следует, что должен быть internal: http://eel.is/c++draft/basic.link#3 потому что она "a non-template variable of non-volatile const-qualified type". В следующем абзаце идут ещё правила, но только для "name having namespace scope that has not been given internal linkage above". А мы для неё уже получили internal linkage above. Собственно вопрос. Это просто кланг пока работает не по стандарту, или это я не умею его читать?AD
const inline
.MM
MM
const inline
.AD
TU-local
.