В чем реальная разница между "constinit" и "constexpr"?
constexpr int f() { return 0; }
int g() { return 0; }
constexpr auto c1 = f(); // OK
constinit auto c2 = f(); // OK
constexpr auto d1 = g(); // ill-formed
constinit auto d2 = g(); // ill-formed
int main() {}
Как показано в приведенном выше коде, я не могу найти никакой разницы между constinit
а также constexpr
.
Какая реальная разница между constinit
а также constexpr
?
Обновить:
Связанное с чемconstinit
в C++20? не указывает четко разницу междуconstinit
а также constexpr
.
1 ответ
Решение
А constinit
переменная инициализируется константой, но она не может использоваться в постоянном выражении или даже автоматически константа. Вашmain
может юридически содержать эту строку
c2 = 2;
Да, модификация возможна после инициализации.