为什么所有现有的C++编译器都不支持继承构造函数?

xml*_*lmx 4 c++ inheritance constructor

目前,G ++和VC++ 2010都不支持继承构造函数.

但是,我认为这是C++ 0x中最漂亮的功能之一.我认为编译器应该很容易实现.

为什么编译器对此功能不感兴趣?

假设我想通过继承std :: string来设计我自己的字符串类,如下所示:

class MyString : public std::string
{
public:
// I have to redefine many overloaded ctors here and forward their arguments to 
// std::string's ctors. How tedious it will be!!!
};
Run Code Online (Sandbox Code Playgroud)

一个漂亮的代码示例:

struct B1 
{
   B1(char);
};

struct B2 
{
   B2(double);
   B2(int);
};

struct D1 : B1, B2 
{
   using B1::B1; //  D1(char)
   using B2::B2;  // D1(double), D1(int)
};

D1 d('c'); //OK, invokes D1(char)
Run Code Online (Sandbox Code Playgroud)

Ben*_*igt 6

C++ 0x中有很多新材料,似乎在gcc上工作的志愿者发现其他变化更有趣,首先要工作.

至于VC++,不仅要确定工作的优先级,还要考虑需求,文档和非常广泛的测试所需的额外成本(通常在Microsoft产品经理博客中提到),这些成本是销售产品的必要部分,仅限于此之外让它工作.

最后,听起来C++ 0x委员会最近讨论了关于削减此功能的问题,因为95%的用例都有简单的解决方法.

综合起来,我并不感到惊讶,编译器工程师正在为以后保存这个.