我在网站上发现了一些解决该问题的问题,但似乎没有一个直接做到这一点。一个示例是this,但是答案并不令人满意(未经测试,也无法解释为什么这样正确)。
考虑以下简单示例:
class some_class
{
public:
Eigen::Matrix<double,3,4> M;
std::vector<Eigen::Matrix<double,4,2>,
Eigen::aligned_allocator<Eigen::Matrix<double,4,2>>> M2;
//other stuff
};
现在假设我需要声明std::vector
个对象中的一个some_class
。然后,是声明
std::vector<some_class,Eigen::aligned_allocator<some_class>>>
//Note that it compiles and doesn't seem to cause noticeable run-time problems either
这样做的正确方法,还是我必须为该类重新实现aligned_allocator
?我发现documentation有点简短和混乱,因为它仅说明
在固定大小的矢量化本征类型上使用STL容器,或具有此类类型成员的类需要...
但没有明确说明在这种情况下是否应该写aligned_allocator
。
上面的声明是否安全,为什么?