Pourquoi n'est-il pas std::make_unique
modèle de fonction dans la norme C++11 de la bibliothèque? Je trouve
std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3));
un peu verbeux. Ne serait pas la suite être beaucoup plus agréable?
auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3);
Ce masque la new
bien et ne mentionne que le type une fois.
De toute façon, voici ma tentative de mise en œuvre de l' make_unique
:
template<typename T, typename... Args>
std::unique_ptr<T> make_unique(Args&&... args)
{
return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
}
Il m'a fallu un certain temps pour obtenir l' std::forward
choses à compiler, mais je ne suis pas sûr si elle est correcte. S'agit-il? Qu'est-ce exactement ne std::forward<Args>(args)...
moyenne? Que fait le compilateur?