代码之家  ›  专栏  ›  技术社区  ›  doublep

移动构造函数和赋值运算符:为什么派生类没有默认值?

  •  6
  • doublep  · 技术社区  · 14 年前

    #include <utility>
    
    struct A
    {
      A () { }
      A (A&&) { throw 0; }
      A& operator= (A&&) { throw 0; }
    };
    
    struct B : A
    { };
    

    下列任一行:

    A  x (std::move (A ());
    A  x;  x = A ();
    

    B  x (std::move (B ());
    B  x;  x = B ();
    

    如果有关系,我用GCC4.4进行了测试。

    1 回复  |  直到 14 年前
        1
  •  6
  •   Roger Pate Roger Pate    14 年前

    读取0x FCD中的12.8(特别是对于move ctor,为12.8/17),这似乎是一个GCC错误。我在4.5中看到了和你在4.4中看到的一样的事情。