在C++中强制执行内存对齐

iam*_*pat 2 c++ eigen

我想设计一个内部使用EIGEN的API.

基于http://eigen.tuxfamily.org/dox/TopicPassingByValue.html,如果类具有Eigen对象作为成员,则不能通过值传递.

是否有任何直接的方式来告诉编译器(例如g ++)我的对象不能通过值传递?

Ker*_* SB 6

您只需使复制构造函数不可用即可.您可以通过使用Boost并继承boost::noncopyable或通过将复制构造函数设为私有来实现此目的:

struct Foo
{
private:
    Foo(Foo const &) { }
};
Run Code Online (Sandbox Code Playgroud)

或者在新的C++中明确删除它:

struct Foo
{
    Foo(Foo const &) = delete;
    Foo(Foo &&)      = delete;
};
Run Code Online (Sandbox Code Playgroud)

您可能也应该通过对赋值运算符执行相同操作来使您的类无法分配(并boost::noncopyable为您处理此问题).