我需要两个有关整数的特征。如果该类型的行为像的整数,并且其表示为真:整数特征(is_integer,is_integral)
第一个会像
std::is_integral
(或boost::is_integral
),但与用户定义的类型可使用(例如类中封装一个int
,说int_wrapper
)像标准整数类型(例如sizeof(T) * CHAR_BITS == std::numeric_limits<T>::digits
,如果T
是无符号的)但整数类型的定义非常严格,因为它包含了这些类型的列表。所以如果专门化std::is_integral
似乎很难,如果不禁止的话(尽管没有明确说明我认为):is_integral
是一个“主要”类型特征(20.7.4.1,注3:对于类型T只有一个主要类型特征是真实的,在我的例子中为int_wrapper
已经有is_class
等于真)。 如果我专门针对int_wrapper
这个特质,我会采取什么风险? 你知道一个符合我需求的特质类(例如Boost)吗?我需要的第二个特征是具有整数语义的类型(包括位算术运算,位操作等)。例如来自GMP的
(mpz_class
将满足这个特征。std::numeric_limits<T>::is_integer
是否适合这种特质?我同时认为,如果T
的行为类似于整数,而且(在C++标准中)术语“整数”和“整数”是同义词(在这种情况下,我们总是应该有numeric_limits<T>::is_integer == is_integral<T>::value
)numeric_limits<T>::is_integer == true
)
总之,我是否更好地为自己的确切需求定义自己的特质,或尝试扩展标准特性?