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
{
}