【发布时间】:2011-05-06 22:53:45
【问题描述】:
当我参加 C++ 标准委员会会议时,他们正在讨论放弃 Inheriting Constructors 的利弊,因为还没有编译器供应商实现它(感觉用户并没有要求它)。
让我快速提醒大家什么是继承构造函数:
struct B
{
B(int);
};
struct D : B
{
using B::B;
};
一些供应商建议使用右值引用和可变参数模板(完美的转发构造函数),在继承类中提供转发构造函数来避免继承构造函数是微不足道的。
例如:
struct D : B
{
template<class ... Args>
D(Args&& ... args) : B(args...) { }
};
我有两个问题:
1) 您能否根据您的编程经验提供真实世界(非人为)的示例,这些示例将从继承构造函数中受益匪浅?
2) 您能想到哪些技术原因会阻止“完美的转发构造函数”成为合适的替代方案?
谢谢!
【问题讨论】:
-
在那里玩得开心。让我们希望他们处理所有这些关键问题:)
-
@Johannes:谢谢!已经讨论了您的许多 DR :)
-
完美转发ctor的一个明显问题可能是它们实际上并没有更短。对于很多类,我可以写一个“传统的”转发构造函数,输入相同的数量。
-
@jalf:我想动机是干掉参数列表的复制。而且我认为出于这个原因添加一个全新的语言功能可能只是一点点强迫症。
标签: c++ inheritance constructor c++11 perfect-forwarding