int sample = 100500; // или constexpr, неважно
линкуется, в отличие от
int sample = 100500;
?
Дело в том, что const не замена inline, и каждый TU который подключает хидер, получает свой экземпляр этой переменной, что можно проверить, выводя адрес указателя на эту переменную.
Мы спорили, имеет ли в хидере смысл inline constexpr переменная вместо просто inline, оказалось что имеет...
у константных объектов внутернняя линковка
А, вспомнил, спасибо! Да, без extern будет внутренней
В этом и смысл
По-любому выглядит странно, т.е. в каждом проекте есть такое засорение памяти (точнее бинаря) сотнями лишних переменных
Только там где не шарят, норм пацаны юзают inline
А вот MSVC, например, не умеет inline-переменные мержить в конкретные секции, так что не всегда
Спасибо за мотивацию! Ушёл учить 25 видов инициализации в C++, чтобы быть ровным пацаном
Вообще, inline - замена extern, а не const.
Значит надо добить до 25 к ближайшим релизам, а то не по-пацански легкий язык будет
там обратный тренд
Обсуждают сегодня