如何在C ++ 11中检查类型是否相等?
std::uint32_t == unsigned; //#1
另一个片段
template<typename T> struct A{
string s = T==unsigned ? "unsigned" : "other";
}
答案 0 :(得分:10)
您可以从C ++ 11开始使用std::is_same<T,U>::value
。
此处,T
和U
是类型,value
如果等效则为true
,如果不是false
则为$scope.tableParams = new this.ngTableParams({}, {
filterOptions: {
filterComparator: function(actual, expected) {
return typeof actual == 'string' && actual.match(new RegExp(expected, 'i'));
}
}
});
。
请注意,这是在编译时评估的。
答案 1 :(得分:2)
为了好玩,试试这个:
template<class T>
struct tag_t { using type=T; constexpr tag_t() {}; };
template<class T>
constexpr tag_t<T> tag{};
template<class T, class U>
constexpr std::is_same<T, U> operator==( tag_t<T>, tag_t<U> ) { return {}; }
template<class T, class U>
constexpr std::integral_constant<bool, !(tag<T> == tag<U>)> operator!=( tag_t<T>, tag_t<U> ) { return {}; }
现在您可以输入tag<T> == tag<unsigned>
。结果是constexpr
并在返回类型中进行编码。