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 <std-proposals@lists.isocpp.org>
Gesendet: Di 19.12.2023 09:13
Betreff: [std-proposals] Concept Overloading in C++
An: New proposal discussion <std-proposals@lists.isocpp.org>;
CC: JIMMY HU <s103360021@gmail.com>;
Hi,
 
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.
 
Example:
template<typenameT>
concept is_summable = requires(T x) { x + x; };             //  one parameter version

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

template<is_summableT>                                     //  the usage of one parameter version
voidfoo(Tinput)
{

}

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

}

--
Jimmy Hu
 
Dec. 19, 2023
 
-- 
 Std-Proposals mailing list
 Std-Proposals@lists.isocpp.org
 https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals