https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110463
Bug ID: 110463 Summary: Mutable subobject is usable in a constant expression Product: gcc Version: 13.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: fchelnokov at gmail dot com Target Milestone: --- The following program is invalid per https://timsong-cpp.github.io/cppwp/n4861/expr.const#4.8 (An object or reference is usable in constant expressions if it is ... a non-mutable subobject) struct U { mutable int x = 2; }; int main() { constexpr U u{}; u.x = 1; static_assert( u.x == 2 ); // must fail, but ok in GCC } but GCC accepts it. Online demo: https://gcc.godbolt.org/z/n8MYzhbad