C++11 标准指定了一个类型特征std::alignment_of<T>
,它简单地返回alignof(T)
.
操作员是否有类似的特征sizeof
?我只是错过了它,还是只是在标准中遗漏了它,或者是否有一些模糊的技术原因没有指定它?
显然,创建这样一个特征是微不足道的,但我无法想象在引入std::alignment_of
.
对于上下文,我有一个自定义类型特征,用于在应用于类型列表时获取单个特征的最大值。
template <template<class> class Trait, typename F, typename... T>
struct trait_max
: std::integral_constant<decltype(Trait<F>::value),
(Trait<F>::value > trait_max<Trait, T...>::value) ? Trait<F>::value : trait_max<Trait, T...>::value>
{ };
template <template<class> class Trait, typename F>
struct trait_max<Trait, F>
: std::integral_constant<decltype(Trait<F>::value), Trait<F>::value>
{ };
当您需要知道一组类型的最大值时,此特征非常方便,如下所示:
auto max_align = traits_max<std::alignment_of, int, float, std::string>::value;
auto max_size = traits_max<std::size_of, int, float, std::string>::value; // doesn't exist