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

Reply via email to