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