模板默认参数

如果我可以做以下事情:

template <typename T = int> class Foo{ }; 

为什么我不允许主要做以下事情?

 Foo me; 

但是我必须指定以下内容:

 Foo<int> me; 

C ++ 11引入了默认的模板参数,现在他们难以理解我的完整理解。

你必须做:

 Foo<> me; 

模板参数必须存在,但您可以将它们留空。

把它看作是一个带有一个默认参数的函数foo 。 expression式foo不会调用它,但是foo()会。 参数语法必须仍然存在。 这是一致的。

您可以使用以下内容:

 Foo<> me; 

int是你的模板参数。 angular括号是必要的,不能省略。

你不能这样做,但你可以这样做

 typedef Foo<> Fooo; 

然后呢

 Fooo me;