efriedma-quic wrote:

Consider the following testcase:

```
struct ConstEval {
  consteval ConstEval(int) {}
};
struct SimpleCtor { constexpr SimpleCtor(int) {}};
struct TemplateCtor {
  template <class Anything = int> constexpr
  TemplateCtor (int arg) {}
};
struct ConstEvalMember1 : SimpleCtor {
    int y = 10;
    ConstEval x = y;
    using SimpleCtor::SimpleCtor;
};
struct ConstEvalMember2 : TemplateCtor {
    int y = 10;
    ConstEval x = y;
    using TemplateCtor::TemplateCtor;
};
void f() {
  ConstEvalMember1 i(0);
  ConstEvalMember2 i2(0);
}
```

With this patch, the first one produces an error, the second doesn't.  Which... 
seems dubious?  Not sure.  Inheriting the "immediate-escalating" property seems 
surprising to me.

https://github.com/llvm/llvm-project/pull/112860
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to