![]() |
1
21
我在这里展示了完美转发方法的一个问题: Forwarding all constructors in C++0x 而且,完美的转发方法不能“转发”基类构造函数的明确性:要么它总是一个转换构造函数,要么永远不会,基类将始终直接初始化(总是使用所有构造函数,甚至显式构造函数)。
另一个问题是初始化列表构造函数,因为您无法推断
|
![]() |
2
4
拟议解决方案的几个缺点:
总的来说,工作的认知复杂性是非常糟糕的。比默认的特殊成员函数更糟糕,因为它添加了一个简单的语法。 构造函数继承的实际动机:AOP混合使用重复继承而不是多重继承实现。 |
![]() |
3
3
除了其他人所说的以外,考虑一下这个人为的例子:
至少使用MIWG G+4.4.1,编译失败是由于C++ 0x构造函数转发。
干杯。 |
![]() |
4
0
即:
对于那些试图解决这个问题的人:你如何区分
|
![]() |
5
-1
哲学上,我反对继承构造函数。如果要定义一个新类,则要定义如何创建它。如果大多数构造都可以在基类中进行,那么将该工作转发给初始化列表中基类的构造函数是完全合理的。但你仍然需要明确地去做。 |
![]() |
GingerPlusPlus · 无法向包装函数添加完美的转发 10 年前 |