есть ли в классе метод с заданным именем, агрументами и определенными ограничениями на результат. C++11/14
Для решения использую SFINAE (и перегрузку метода с std::result_of)
В gcc работает этот код https://wandbox.org/permlink/ey2PKVXWXg7zP32o
В VS2017 с ним тоже проблем нет. Но стоит задача собрать его в Visual Studio 2015 (v140). Там получаю ругань:
<...>\type_traits(1515): error C2955: "std::_Result_of": для использования класс шаблон требуется список аргументов шаблон
<...>\type_traits(1486): note: см. объявление "std::_Result_of"
<...>.cpp(10): note: см. ссылку на создание экземпляров класса шаблон при компиляции "std::result_of<unknown-type (U *,double)>" with U=no
Есть варианты, как можно переписать код?
https://gcc.godbolt.org/z/Ybp5k3
Вызываешь метод. Если он есть, он вызовется. Если нет - SFINAE
Обсуждают сегодня