当有const成员时,为什么= default = operator = compile?

use*_*453 6 c++ c++11

class Foo {
public:
  Foo& operator=(const Foo&) = default;
private:
  const int i = 0;
};
Run Code Online (Sandbox Code Playgroud)

为什么=default允许那里?它编译没有错误.我认为=default应该失败,因为它不可能分配给const变量?

究竟发生了什么?

R. *_*des 13

当无法生成函数时(如果是这种情况),= default将生成它作为= deleted.如果您尝试使用该赋值运算符,则编译器应生成错误.