The concepts shown here are templates.

It is about template specialization, not function overloading. Templates can also be specialized according to parameter values, functions can be overloaded only according to types and numbers of parameters.


So better compare concepts to templates than to functions.

-----Ursprüngliche Nachricht-----
Von: JIMMY HU via Std-Proposals <>
Gesendet: Di 19.12.2023 09:13
Betreff: [std-proposals] Concept Overloading in C++
An: New proposal discussion <>;
The meaning of function overloading is that two or more functions can have the same name but different parameters. In C++20, concept has been introduced. I think that the same logic should be applied to concepts in C++: two or more concepts can have the same name but different number of parameters, and the usage of concept depends on the number of given parameters.
concept is_summable = requires(T x) { x + x; };             //  one parameter version

//  error: redefinition of concept 'is_summable' with different template parameters or requirements
concept is_summable = requires(T x, T y) { x + y; };        //  two parameter version

template<is_summableT>                                     //  the usage of one parameter version


template<classT1, classT2>
requires(is_summable<T1, T2>)                               //  the usage of two parameter version


Jimmy Hu
Dec. 19, 2023
 Std-Proposals mailing list