我有以下代码:
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
中授权周期的原因是什么?