170 похожих чатов

Такой вопрос, почему constexpr member variable можно менять в constexpr

[static] member function, а constexpr static member variable нельзя? Нигде не нашел ответа на этот вопрос.

8 ответов

16 просмотров

Кажется при каких-то условиях contexpr неявно добавляет const. Если интересно много и подробно у Матросова был доклад о всех тонкостях constexpr спецификатора.

Tim-Pavlov Автор вопроса
magras
Кажется при каких-то условиях contexpr неявно доба...

называется "спецификаторы, квалификаторы и шаблоны"?

Tim Pavlov
называется "спецификаторы, квалификаторы и шаблоны...

"Как объявить константу в С++" https://youtu.be/GPAGiXNVED4

Почему менять constexpr static/global variable нельзя — очевидно, ни одна constexpr функция (UPD: вызываемая в core constant expression) не должна мутировать глобальное состояние, частью которого является такая переменная. А вот что такое constexpr member variable?.. Как такое объявить?

Tim-Pavlov Автор вопроса
Ofee Oficsu
Почему менять constexpr static/global variable нел...

в этом вопросе четко видно что она все же может менять глобальную переменную: https://stackoverflow.com/questions/51053280/modifying-a-global-variable-in-a-constexpr-function-in-c17 причем со static-ом это тоже работает, я подумал что может constexpr функция нормально справляется с переменными в ее же области видимости, но не нашел нигде четкого объяснения этому

Tim-Pavlov Автор вопроса
Tim Pavlov
в этом вопросе четко видно что она все же может ме...

но, опять же, так и не понял почему это работает

Tim Pavlov
в этом вопросе четко видно что она все же может ме...

Обратите внимание, что вызов Foo(false) — это вызов рантайм функции, для которых совершенно допустимо менять глобальное состояние. Но стоит изменить код таким образом: constexpr int _ = Foo(false); и ни один компилятор это не скомпилирует. Потому что вызов теперь происходит на этапе компиляции

Tim-Pavlov Автор вопроса
Ofee Oficsu
Обратите внимание, что вызов Foo(false) — это вызо...

только что проверил с помощью static_assert, работает без ошибок

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта