This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 120c. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2026-09-13
(From submission #951.)
It is design-unclear whether the prototype parameter of a concept definition is allowed to have a default argument. That default argument would be used only in situations where a concept-id appears as a boolean expression. Example:
template <typename T = int>
concept C2 = true;
static_assert(C2<>);
template<C2 U> // U is not required to be int
void f(U);
Suggested resolution of submitter:
Change in 13.7.9 [temp.concept] as follows:
The first declared template parameter of a concept definition is its prototype parameter. It shall not have a default argument (13.2 [temp.param]). A type concept is a concept whose prototype parameter is a type template parameter.
Additional notes (CWG 2026-09-01)
CWG considers this a language design question and requests EWG input via paper issue #2875.