#include #include #include template concept Addable = requires(Type lh, Type rh) { lh + rh; }; template concept Addable2 = Addable and requires(Type lh, Type rh) { lh += rh; }; template Type add(Type const &x, Type const &y) { return x + y; } template Type add2(Type const &x, Type const &y) { return x + y; } using namespace std; int main() { add("one"s, "two"s); // add(unordered_map{}, unordered_map{}); }