Arguments par défaut du modèle
Si j'ai le droit de faire ce qui suit:
template <typename T = int>
class Foo{
};
Pourquoi ne suis-je pas autorisé à faire ce qui suit dans main ?
Foo me;
But I must specify the following:
Foo<int> me;
C++ 11 a introduit des arguments de modèle par défaut et pour le moment, ils sont insaisissables pour ma compréhension complète.
Solution du problème
Noter:
Foo me;
sans arguments de modèle est légal à partir de C++17. Voir cette réponse: https://stackoverflow.com/a/50970942/539997.
Réponse originale applicable avant C++17 :
Tu dois faire:
Foo<> me;
Les arguments du modèle doivent être présents mais vous pouvez les laisser vides.
Considérez-le comme une fonction foo
avec un seul argument par défaut. L'expression foo
ne l'appellera pas, mais foo()
le fera. La syntaxe de l'argument doit toujours être là. Ceci est cohérent avec cela.
Commentaires
Enregistrer un commentaire