Si se me permite hacer lo siguiente:
template <typename T = int>
class Foo{
};
¿Por qué no se me permite hacer lo siguiente en main?
Foo me;
Pero debo especificar lo siguiente:
Foo<int> me;
C ++ 11 introdujo argumentos de plantilla predeterminados y en este momento están siendo difíciles de entender.
Foo
podría ser un identificador de plantilla o podría ser una instanciación explícita en función de si hay un argumento predeterminado. Mejor mantener la sintaxis de instanciación explícita. Piense en ello como una funciónfoo
con un único parámetro predeterminado. No puedes llamarlo asífoo
, lo llamas confoo()
. Tiene sentido mantener esto consistente.