Как объявить константу в С++?

RU / День 3 / 10:45 / Зал 2

С++ прекрасен тем, что простейшие вещи в нём могут быть чрезвычайно запутанны и сложны. Казалось бы, что может быть проще, чем объявить константу?

Достаточно лишь выбрать подходящий нам linkage и storage duration, определиться с видимостью константы и тем, в каких единицах трансляции она будет представлена. Выбрать наиболее удобный способ определения: глобальная переменная, локальная переменная, статическое поле класса. Указать подходящую комбинацию спецификаторов static, inline и constexpr. Ещё может быть стоит сделать переменную шаблоном или ссылкой. А если речь идёт о строке, надо бы ещё не прогадать с типом: const char*, char[], std::string, std::string_view.

Если для вас все эти шаги очевидны — поздравляем! Это впечатляет. Если же вам, как и Михаилу, этот зоопарк немного взрывает мозг, то давайте вместе в этом разберёмся.

Доклад предполагает понимание концепций linkage и storage duration, объявления и определения, спецификаторов static, inline и constexpr и их комбинаций. Весь этот материал раскрыт в предыдущем докладе Михаила "Спецификаторы, квалификаторы и шаблоны" на C++ Russia Piter 2019.

Комментарий программного комитета

Объявить константу — что может быть проще? Но язык C++ содержит в себе очень развернутый ответ на этот вопрос. Ведь мы можем использовать различные спецификаторы и их отличия, о которых в докладе расскажет Михаил.