Se eu puder fazer o seguinte:
template <typename T = int>
class Foo{
};
Por que não estou autorizado a fazer o seguinte em principal?
Foo me;
Mas devo especificar o seguinte:
Foo<int> me;
O C ++ 11 introduziu argumentos de modelo padrão e, no momento, eles estão sendo esquivos para meu entendimento completo.
Foo
pode ser um identificador modelo ou pode ser uma instanciação explícita, dependendo se há um argumento padrão. Melhor manter a sintaxe de instanciação explícita. Pense nisso como uma funçãofoo
com um único parâmetro padrão. Você não pode chamá-lo assimfoo
, você pode chamá-lo comfoo()
. Faz sentido manter isso consistente.