I'd like to use std::is_invocable, however we are using c++11 standard, while is_invocable is available only from c++17.
Is there any way to emulate the functionality using c++11?
Thank you
See Question&Answers more detail:osI'd like to use std::is_invocable, however we are using c++11 standard, while is_invocable is available only from c++17.
Is there any way to emulate the functionality using c++11?
Thank you
See Question&Answers more detail:osYou can try this implementation:) Taken from boost C++ libraries. I've tested it with VS2017 with standard C++14.
template <typename F, typename... Args>
struct is_invocable :
std::is_constructible<
std::function<void(Args ...)>,
std::reference_wrapper<typename std::remove_reference<F>::type>
>
{
};
template <typename R, typename F, typename... Args>
struct is_invocable_r :
std::is_constructible<
std::function<R(Args ...)>,
std::reference_wrapper<typename std::remove_reference<F>::type>
>
{
};