Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Ключевое слово constexpr
Предположим, что мы хотим указать размер массива в глобальной области видимости с помощью значения, возвращаемого функцией:
int func() {
return 5 + 3;
}
int arr[func()] = {0};
В результате получим ошибку при компиляции:
error: array bound is not an integer constant before ']' token
Чтобы возвращаемое функцией значение было константным и вычислялось на этапе компиляции, следует перед типом возвращаемого значения указать ключевое слово constexpr
:
constexpr int func() {
return 5 + 3;
}
int arr[func()] = {0}; // OK: int arr[8] = {0};
Ключевое слово constexpr
можно также указать при инициализации переменной. Изменить значение такой переменной после инициализации будет нельзя:
constexpr int x = 5 + 3;
int arr[x] = {0}; // OK: int arr[8] = {0};
В данном случае вместо constexpr
можно использовать ключевое слово const
:
const int x = 5 + 3;
int arr[x] = {0}; // OK: int arr[8] = {0};
Использование ключевого слова constexpr
имеет множество ограничений, причем их список сильно зависит от используемого стандарта языка C++. За подробностями обращайтесь к документации.
Помощь сайту
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов