sstepashka
@sstepashka

Dependent method type (C++)

Если пример реализации такой штуки как Dependent method type на Scala. (link). Возможно ли такое сделать на C++11 (например) или на каком-то другом языке со статической типизацией? Тут вся фишка в использовании менно функционального подхода, но c «хаком» в виде класса.
  • Вопрос задан
  • 3228 просмотров
Пригласить эксперта
Ответы на вопрос 2
AxisPod
@AxisPod
Вам нужна перегрузка по входному параметру функции. Просто проверку условия if/else надо переложить на плечи перегруженных методов, универсально внутри метода сравнить нельзя. Сделайте вспомогательную шаблонную функцию.

template<typename T>
struct type2type { typedef T type; }

temlate<typename U, typename T>
U helper_func(T const& method, type2type<GetX>) { return [](){return 1;}; }

temlate<typename U, typename T>
U helper_func(T const& method, type2type<ToString>) { return [](){return "aaaa";}; }

// и вызов
template <typename T>
std::result_of<typename T::signature> func(T const& method) {
    return helper_func<std::result_of<typename T::signature>, T>(method, type2type<T>());
}
Ответ написан
Teivaz
@Teivaz
Есть вариант. В смысле буст:: вариант.
boost::variant
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы