我可以使用以下模板检查来检测成员:
例如:对于:
template <typename T, typename = void>
struct hasMember : std::false_type {};
template <typename T>
struct hasMember<T, decltype((void)T::member, void())> : std::true_type {};
例如:对于:
class Test{
public:
int member;
using sometype = size_t;
}
我可以做到:
if constexpr(hasMember<Test>)
{
//do something
}
现在假设我需要一个 constexpr if
,用于判断一个类是否有using定义。也就是说,需要检测某个类(例如test
)是否有某种类型的using定义。也就是像这样:
if constexpr(hasSomeType<Test>)
{
//do something
}
在C++17中是否有可能实现这个?如何实现?
requires
,两者都可以变成一行代码。 - HolyBlackCat