Check if class has method C++17
Hi, I've tried few options, but seems, this is the most compact code for checking if class has some method:
template <typename T>
static constexpr bool hasFunction(...) { return false; }
template <typename T>
static constexpr bool hasFunction(int, decltype((std::declval<T>().myFunc(float() )))* = 0) { return true; }
Check method availability with next constexpr condition:
if constexpr (hasFunction<MyClass>(0)) {
// Your code here
}
SFINAE above work on VS17, latest Clang and Gcc 6. I tested it only with C++17. But it should also work with C++14.
Hope this help.
Комментарии
Отправить комментарий