我正在努力在编译时检查类型是否是std::bittset。
我想用这样的方法。
is_bitset<std::bitset<2>>::value; // should evaluate to true
is_bitset<int>::value; // should evaluate to false
我想这样 所以职位 指向了正确的方向,但由于某些原因,我无法用std::bitset来实现它。
在C++14中,最好的方法是什么?
解决方案与你发布的链接中的答案非常相似。
template<typename T>
struct is_bitset : std::false_type {};
template<std::size_t N>
struct is_bitset<std::bitset<N>> : std::true_type {};
static_assert(is_bitset<std::bitset<2>>::value); // should evaluate to true
static_assert(!is_bitset<int>::value); // should evaluate to false
请注意,主模板需要一个类型,而特殊化为 bitset
接受一个非类型参数。
下面是一个 演示.