Кто-нибудь знает, как сделать концепцию C ++ T
такой, чтобы функция g
определялась только для аргументов t
с типом T
, если существует перегрузка f
в B
, которая принимает аргумент t
?
struct A1 {};
struct A2 {};
struct B {
void f(A1 a1) {}
};
void g(T t) {
B b;
b.f(t);
}
В качестве примера я хочу определить to_string
для всего, что принимает std::stringstream
, и определить что-то вроде
std::string to_string(T t) {
std::stringstream ret;
ret << t;
return ret.str();
}
Все примеры В концепциях рассматривается более простой случай, когда требуется наличие функции для типа, в то время как в этом случае мы хотим проверить существование функции для другого типа.