Если мне разрешено делать следующее:
template <typename T = int>
class Foo{
};
Почему мне не разрешено делать следующее в основном?
Foo me;
Но я должен указать следующее:
Foo<int> me;
C ++ 11 представил аргументы шаблона по умолчанию, и сейчас они не совсем понятны.
Fooможет быть идентификатором шаблона или могут быть явная конкретизацией в зависимости от того, есть ли аргумент по умолчанию. Лучше сохранить явный синтаксис создания экземпляров. Думайте об этом как о функцииfooс единственным параметром по умолчанию. Вы не можете назвать это какfoo, вы называете это сfoo(). Имеет смысл сохранять это последовательным.