Концепт должен применяться к вызывающему коду. Я слегка модифицировал ваш пример для общего случая. Сейчас им можно проверять, содержит ли любой класс метод match с определённой сигнатурой:
template <class T, class V>
concept bool HasMethodMatch = requires(T a, V v) {
{ a.match(v) } -> bool;
};
class A {
public:
template <class T>
bool match(T t) const {
return t == 1;
}
};
template <class V>
requires HasMethodMatch<A, V>
void doSmth(const A& a, V v)
{
a.match(v);
}
int main()
{
A a;
doSmth(a, 5);
doSmth(a, 5.f);
doSmth(a, 5.d);
}
Для более общего случая, в методе doSmth, класс A можно заменить на ещё один шаблонный параметр. Но, я думаю, что логика теперь более-менее ясна.