dimanche 6 août 2017

Check the existence of a template function

How can I check the existence of a template function like this: Checking if reader struct has read arithmetic value

struct reader {
    template<typename T>
    std::enable_if_t<std::is_arithmetic<T>::value, T> read() {
        return {};
    }
};

I use a checker like this:

template <typename T>
struct test_read {
    static constexpr auto value = std::is_convertible<decltype(std::declval<T>().read<int>()),int>::value;      
};

But the compiler complains:

error: wrong number of template arguments (1, should be 2)
 static constexpr auto value = std::is_convertible<decltype(std::declval<T>().read<int>()),int>::value;

Please give me your advice on that.

Thank you.

Aucun commentaire:

Enregistrer un commentaire