I can detect a member using the following template check:
template <typename T, typename = void>
struct hasMember : std::false_type {};
template <typename T>
struct hasMember<T, decltype((void)T::member, void())> : std::true_type {};
E.g. for:
class Test{
public:
int member;
using sometype = size_t;
}
I could do:
if constexpr(hasMember<Test>)
{
//do something
}
Now suppose I need a constexpr if that tells me if a class has a using definition. I.e. something that could detect that some class (e.g. test) has a using definition of some type. I.e. something like
if constexpr(hasSomeType<Test>)
{
//do something
}
Is this possible in c++17? How?