Pour l'instant, G++ et VC++ 2010 ne prennent pas en charge l'héritage des constructeurs.
Cependant, je pense que c'est l'une des fonctionnalités les plus belles de C++0x. Et je pense que ce devrait être assez facile à implémenter par le compilateur.
Pourquoi les compilateurs ne sont-ils pas intéressés par cette fonctionnalité?
Supposons que je veuille concevoir ma propre classe de chaîne en héritant de std::string comme ceci :
class MyString : public std::string
{
public:
// Je dois redéfinir de nombreux constructeurs surchargés ici et transmettre leurs arguments aux
// constructeurs de std::string. Que cela sera fastidieux !!!
};
Un bel exemple de code :
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, invoque D1(char)