Si je suis autorisé à faire ce qui suit:
template <typename T = int>
class Foo{
};
Pourquoi ne suis-je pas autorisé à faire ce qui suit en général?
Foo me;
Mais je dois préciser ce qui suit:
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.
Foo
peut - être un identificateur de modèle ou peut - être une instanciation explicite selon que il y a un argument par défaut. Mieux vaut conserver la syntaxe d'instanciation explicite. Pensez-y comme une fonctionfoo
avec un seul paramètre par défaut. Vous ne pouvez pas l'appeler commefoo
, vous l'appelez avecfoo()
. Il est logique de garder cela cohérent.