Jeśli wolno mi wykonywać następujące czynności:
template <typename T = int>
class Foo{
};
Dlaczego w zasadzie nie wolno mi wykonywać następujących czynności?
Foo me;
Ale muszę określić co następuje:
Foo<int> me;
C ++ 11 wprowadził domyślne argumenty szablonów i obecnie są one nieuchwytne dla mojego pełnego zrozumienia.
Foo
może być identyfikatorem szablon lub może być jawne instancji w zależności od tego, czy istnieje domyślny argument. Lepiej zachowaj jawną składnię tworzenia instancji. Pomyśl o tym jak o funkcjifoo
z jednym domyślnym parametrem. Nie możesz tego takfoo
nazwać, nazywasz tofoo()
. Zachowanie tej spójności ma sens.