是否可以声明operator = private并让它在C++中由编译器同时合成

Mar*_*dik 4 c++ compiler-construction operators

我很满意operator =,它由编译器自动合成.但我希望它是私有的,并且不希望使用该类型的页面长定义来膨胀我的代码

Foo& Foo::operator= (const Foo& foo)
{
    if (this == &foo)
        return *this;

    member1_    = foo.member1_;
    member2_    = foo.member2_;
    member3_    = foo.member2_;
    ...
    member1000_ = foo.member1000_;

    return *this;
} 
Run Code Online (Sandbox Code Playgroud)

拜托,有办法做到这一点吗?

Ben*_*igt 8

在C++ 11中它是:

class Foo
{
    Foo& operator=(const Foo& source) = default;
public:
    // ...
};
Run Code Online (Sandbox Code Playgroud)

不幸的是,大多数编译器还没有实现新标准的这一部分.