C++ Logo

std-proposals

Advanced search

[std-proposals] Concept Overloading in C++

From: JIMMY HU <s103360021_at_[hidden]>
Date: Tue, 19 Dec 2023 16:12:53 +0800
Hi,

The meaning of *function overloading* is that two or more functions can
have the same name but different parameters. In C++20, concept
<https://en.cppreference.com/w/cpp/language/constraints> 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<typename T>
concept is_summable = requires(T x) { x + x; }; // one
parameter version

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

template<is_summable T> // the usage
of one parameter version
void foo(T input)
{

}

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

}

-- 
Jimmy Hu
Dec. 19, 2023
Email: s103360021_at_[hidden]

Received on 2023-12-19 08:13:06