template <typename T>
class Method {
static T signature;
};
class GetX : public Method<std::function<int (void)>>{} GetX;
template <typename T>
std::result_of<typename T::signature> func(T const& method) {
if (method == GetX) {
return [](){return 1;};
} else {
}
}
В примере на scala, если привести к C++ сделано так, что внутри функции создаётся класс, который имеет доступ к входящим переменным (lambda) и у него определён оператор operator(), как раз в котором реализована логика возвращаемого значения с зависимости от типа входящего. Сделано это с помощью patter matching (или как-то так, это специальная конструкция scala).
Хотелось бы доиться чего-то на подобии:
И что бы вызывалось как-то так:
GetX — может быть экзхемпяром какого-то класса, от типа которого, как раз всё зависит.