C++20中具有特征成员的结构

btxsgosb  于 2022-12-24  发布在  其他
关注(0)|答案(2)|浏览(115)

Eigen文档提到了具有固定大小的可向量化Eigen类型的结构可能会导致分配问题。
如果你在[c++17]模式下编译时使用的编译器足够新(例如GCC〉=7,clang〉=5,MSVC〉=19.12),那么所有的事情都由编译器负责,你可以停止阅读。
这是否意味着当使用[c++20]编译时会出现问题,因为它们只强调[c++17]模式?或者这个问题对于[c++17]之后的任何编译器都能解决?

5anewei6

5anewei61#

这条语句基于P0035R4(* 过对齐数据的动态内存分配 *),它是在C17中 * 引入 * 的,这意味着这条语句可以说也适用于C20。然而,这条语句似乎有一些问题和陷阱,即使遵循本征准则的建议,例如PointCloudLibrary / pcl / issue #4258中强调的。

htrmnn0y

htrmnn0y2#

文档非常清楚:只有在c++17模式下使用最新的编译器(它是一个AND)才能保护您免受对齐问题的影响。因此,使用最新的编译器但未能设置-std=c++17会使您暴露于该问题。如文档中所建议的,解决方案是修改代码并利用EIGEN_MAKE_ALIGNED_OPERATOR_NEW宏(对于c++17,该宏为空)
或者,文档提出了其他侵入性较低的解决方案:给你。

相关问题