Many articles give examples like this:
template<typename T>
concept Equal = requires(T a, T b) {
{ a == b } -> std::same_as<bool>;
};
Does it make any difference if I write:
template<typename T>
concept Equal = requires(T a) {
{ a == a } -> std::same_as<bool>;
};
If it doesn't, why was the syntax designed like this? Why do they ask me to declare these variables like a or b?
Why do I need multiple variables of the same type? And why do I even need variables?
template<typename T>
concept Equal = requires {
{ declval<const T&>() == declval<const T&>() }
-> std::same_as<bool>;
};