为什么这个构造函数会创建一个"委托循环"?

时间:2017-09-05 20:15:12

标签: c++

我有以下代码:

struct ArrayND{
    ArrayND() : ArrayND(0) {}
    ArrayND(int n) : ArrayND({n}) { }
    ArrayND(std::vector<int> _shape){
      ...
    }
}

编译器输出(Apple LLVM版本8.1.0(clang-802.0.42)):

error: constructor for 'ArrayND' 
creates a delegation cycle [-Wdelegating-ctor-cycles]
      ArrayND(int n) : ArrayND({n}) { }

This文章给出了一个委托周期的例子:

class C
{
  public:

  C(int) { }
  C() : C(42) { }
  C(char) : C(42.0) { }
  C(double) : C('a') { }
};

虽然我清楚地了解class C中的授权周​​期,但我并不理解class ArrayND

ArrayND中授权周期的原因是什么?

0 个答案:

没有答案