Que*_*tin 11 c++ memory-alignment alignof c++17
我偶然发现了std::alignment_of类型特征,以及即将成为朋友的类型特征std::alignment_of_v.它们似乎专门设计为等同于普通调用alignof,并且未来添加_v帮助程序表明它不仅仅是遗留位.
有什么用的std::alignment_of(_v),当我们有alignof?
Yak*_*ont 12
它们几乎完全是多余的.作为@Revolver指出,他们在不同的文件相继出台,以及alignment_of来自boost几乎一字不差.
但这并不意味着这种特性毫无用处.
A template<class...>class可以传递给其他templates并与元编程一起使用.操作员喜欢alignof不能:你必须先编写template<class>class alignment_of它才能将它传递给元编程设施.
现在可以说sizeof需要一个std::size_of<class>模板.
...
添加_v是因为它们扫描了每个 ::value integral_constant类型的模板std并添加了一个_v变量模板.考虑哪些哪些是值得的,哪些不是自行绘画和几乎毫无意义:每个人都比在花费精力去挑选有价值的人做更容易.它的完成并不是该特征不会过时的证据.
它std::alignment_of是作为 Boost 类型特征库的端口引入的。它早于 C++11 和alignof关键字。该特征已被alignof运算符取代,但保留它主要是出于兼容性目的(因此您可以仅替换boost::为std::),并且_v引入变量别名是为了与库的其他部分保持一致。