cpp-ru / ideas

Идеи по улучшению языка C++ для обсуждения
https://cpp-ru.github.io/proposals
Creative Commons Zero v1.0 Universal
89 stars 0 forks source link

Добавить атрибут [[internal]] для internal linkage (подумать над названием) #350

Open apolukhin opened 3 years ago

apolukhin commented 3 years ago

Перенос предложения: голоса +6, -3 Автор идеи: Yuriy Chernyshov

Как адекватную и универсальную замену static / anonymous namespace

Сейчас для этого применяется либо ключевое слово static (не работает для классов) и констант, либо анонимные неймспейсы (вообще неочевидно, что использование анонимного неймспейса ведёт в internal linkage.

Кроме этого анонимный неймспейс - это лишний уровень вложенности, за которым надо следить (и из-за которого нельзя свободно перемещать методы внутри файла).

apolukhin commented 3 years ago

ilnurkh, 4 марта 2019, 13:26 А сейчас вообще есть аттрибуты, при выпиливании которых меняется поведение программы?

Все которые я помню ([[maybe_unused]] [[nodiscard]] например) связаны либо с "статическими проверками кода" либо с оптмизиациями.

Это же заставит аттрибут влиять существенным образом на резолвинг методов. И в частности ломает возможность корректно собирать код с аттрибутами старыми компиляторами (в текущем состоянии можно выключить проверки, компилятор заигнорит аттрибуты и всё будет ок)