NoumanAmir657 added a comment. **Code:**
struct Base { constexpr Base() = default; }; struct Derived : virtual Base { constexpr Derived() = default; }; struct NoCopyMove { constexpr NoCopyMove() {} NoCopyMove(const NoCopyMove&); NoCopyMove(NoCopyMove&&); }; struct S2 { constexpr S2() = default; constexpr S2(const S2&) = default; constexpr S2(S2&&) = default; NoCopyMove ncm; }; **Error Generated** ../../llvm-test/x.cpp:5:3: error: default constructor cannot be 'constexpr' in a class with virtual base class 5 | constexpr Derived() = default; | ^ ../../llvm-test/x.cpp:4:18: note: virtual base class declared here 4 | struct Derived : virtual Base { | ^ ../../llvm-test/x.cpp:15:3: error: defaulted definition of copy constructor is not constexpr 15 | constexpr S2(const S2&) = default; | ^ ../../llvm-test/x.cpp:16:3: error: defaulted definition of move constructor is not constexpr 16 | constexpr S2(S2&&) = default; | ^ 3 errors generated. @aaron.ballman do you mean like this? This now generates different diagnostics depending on whether a virtual base class is present or not CHANGES SINCE LAST ACTION https://reviews.llvm.org/D158540/new/ https://reviews.llvm.org/D158540 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits