Якщо мені дозволено робити наступне:
template <typename T = int>
class Foo{
};
Чому в основному мені не дозволяють робити наступне?
Foo me;
Але я повинен вказати наступне:
Foo<int> me;
C ++ 11 представив аргументи шаблону за замовчуванням і зараз вони невловимі для мого повного розуміння.
Foo
може бути ідентифікатором шаблону або можуть бути явна конкретизацією в залежності від того, чи є аргумент за замовчуванням. Краще зберігайте синтаксис явного інстанції. Подумайте про це як про функціюfoo
з одним параметром за замовчуванням. Ви не можете назвати це такfoo
, як виfoo()
. Це має сенс дотримуватися цього.