我刚刚偶然发现了std::alignment_of类型的特质,以及它即将成为朋友的std::alignment_of_v。它们似乎被专门设计成等同于对alignof的简单调用,而_v助手的未来添加表明,它不仅仅是一个遗留位。
当我们有std::alignment_of (_v)时,alignof的用途是什么?
发布于 2016-05-02 13:38:58
它们几乎是完全多余的。正如@Revolver所指出的,它们是在不同的文章中介绍的,而alignment_of几乎是逐字来自boost。
但这并不意味着这种特质是无用的。
template<class...>class可以传递给其他template并与元编程一起使用。像alignof这样的操作符不能:您必须编写template<class>class alignment_of才能将它传递给元编程工具。
现在,对于需要一个sizeof模板的std::size_of<class>也可以这样说。
..。
_v的添加是因为它们清除了std中的每个::value integral_constant-type模板,并添加了_v变量模板。考虑哪些地方值得,哪些不会是自行车画,而且几乎毫无意义:做每一件事都比花力气挑选有价值的人要容易。这样做并不能证明功能并没有过时。
发布于 2016-05-02 12:12:46
引入std::alignment_of作为Boost型性状库的端口。它先于C++11和alignof关键字。这个特性被alignof操作符所取代,但它的保留主要是为了兼容性目的(所以您只需用std::替换boost:: ),为了与库的其他部分保持一致,引入了_v变量别名。
发布于 2021-03-05 23:53:32
我在实践中发现的一件好事是,对于旧代码来说,alignof在语法上是无效的,而alignment_of只是一个标准模板。因此,您可以通过使用编译器所接受的任何替代语法来提供alignment_of的实现,从而保持与旧编译器的兼容性,然后在任何地方使用它。
https://stackoverflow.com/questions/36981968
复制相似问题