Details
Details
- Reviewers
 aaron.ballman erichkeane tahonermann shafik 
Diff Detail
Diff Detail
Event Timeline
Comment Actions
Two cases to consider: https://godbolt.org/z/ovofPExGK
namespace MutableFields {
  class Foo {
  public:
    constexpr Foo() : I(1) {}
    mutable int I; // ref-note {{declared here}}
  };
  constexpr int foo() {
    constexpr Foo F;  
    F.I = 12;
    return F.I;
  }
  static_assert(foo() == 12, "");
}clang and gcc disagree on this one, I think clang is right not 100%.
and this one:
namespace MutableFields {
  class Foo {
  public:
    constexpr Foo() : I(1) {}
    mutable int I; // ref-note {{declared here}}
  };
  constexpr int foo() {
    constexpr Foo F;  // A
    F.I = 12;
    constexpr int x = F.I; // B
    return F.I;
  }
  static_assert(foo() == 12, "");
}