为什么我们需要std::initializer_list的私有构造函数?
的建议实施std::initializer_list的标准和C ++编程语言很简单。简单我的意思是没有什么奇怪的。
但是在 Compilers 的实现中事情变得复杂std::initializer_list,例如,GCC 有一个私有构造函数 for std::initializer_list,上面有一条注释说:'编译器可以调用私有构造函数。'。在这里eerorika回答:std::initializer_list是特别的。所以我在编译器源代码中寻找它:
铛:
- AST/ExprCXX.h#L789
- AST/StmtPrinter.cpp#L1935
- AST/ItaniumMangle.cpp#4523
海湾合作委员会:
- cp/cp-tree.h#L2303
- cp/init.c#L702
- cp/call.c#L801
我不明白为什么我们需要一个特殊的私有构造函数?前段时间我想转换std::vector<T>为std::initializer_list<T>.