#include #include template concept Addable = requires(Type lh, Type rh) { lh + rh; }; //generic template struct Handler { Handler() { std::cout << "Generic Handler\n"; } }; //= //addable template // constrain Tp to addable types struct Handler { Handler() { std::cout << "Handler for types supporting operator+\n"; } }; //= //use int main() { Handler>{}; // generic Handler{}; // specialized } //=