This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 118c. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2025-10-11
The Standard should make clear that a constexpr member function cannot be used in a constant expression until its class is complete. For example:
template<typename T> struct C {
template<typename T2> static constexpr bool _S_chk() {
return false;
}
static const bool __value = _S_chk<int>();
};
C<double> c;
Current implementations accept this, although they reject the corresponding non-template case:
struct C {
static constexpr bool _S_chk() { return false; }
static const bool __value = _S_chk();
};
C c;
Presumably the template case should be handled consistently with the non-template case.
CWG 2024-06-28
CWG opined that, contrary to the assertion in the issue, the treatment of non-templated class definitions should be changed to more closely resemble templated ones. This direction is covered by issue 2335.