Mentre mi siedo alle riunioni del comitato per gli standard C++, stanno discutendo i pro e i contro del rilascio di Inheriting Constructors poiché nessun fornitore di compilatore l'ha ancora implementato (il senso è che gli utenti non lo hanno richiesto).Quanto sarebbe utile ereditare costruttori in C++?
Vorrei ricordare rapidamente a tutti quello costruttori Ereditare sono:
struct B
{
B(int);
};
struct D : B
{
using B::B;
};
Alcuni fornitori propongono che, con riferimenti r-value e modelli variadic (costruttori di inoltro perfetto), sarebbe banale per fornire un costruttore di inoltro in la classe ereditaria che eliminerebbe i costruttori ereditari.
Per es .:
struct D : B
{
template<class ... Args>
D(Args&& ... args) : B(args...) { }
};
Ho due domande:
1) Potete fornire esempi reali (non inventati) dalla vostra esperienza di programmazione che potrebbero trarre beneficio in modo significativo da ereditare costruttori?
2) Esistono motivi tecnici a cui si può pensare che impediscano ai "costruttori di inoltro perfetti" di essere un'alternativa adeguata?
Grazie!
Buon divertimento lì. Speriamo che elaborino tutti quei problemi cricici :) –
@Johannes: Grazie! Alcuni DR sono stati discussi :) –
un ovvio problema con i corrieri di inoltro perfetti potrebbe essere che non sono molto più brevi. Per molte classi, potrei semplicemente scrivere un costruttore di inoltro "tradizionale" con la stessa quantità di digitazione. – jalf