https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107782
Bug ID: 107782 Summary: constexpr volatile variable is permitted to appear in a constant expression Product: gcc Version: 12.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: fchelnokov at gmail dot com Target Milestone: --- This program int main() { constexpr volatile int i = 0; constexpr volatile int j = i; return j; } is properly rejected by Clang since according to https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4093.html#1688 constexpr volatile variable cannot appear in a constant expression. Unfortunately GCC (and MSVC) accept invalid program. Online demo: https://gcc.godbolt.org/z/43ee65Peq Related discussion: https://stackoverflow.com/q/74511594/7325599