如果允许我执行以下操作:
template <typename T = int> class Foo{ };
为什么我不允许在 main 中执行以下操作?
Foo me;
但我必须指定以下内容:
Foo<int> me;
C++11 引入了默认模板参数,现在我完全无法理解它们。
笔记:
Foo me;从 C++17 开始,没有模板参数是合法的。请参阅此答案:https ://stackoverflow.com/a/50970942/539997 。
适用于 C++17 之前的原始答案:
你所要做的:
Foo<> me;
模板参数必须存在,但您可以将它们留空。
把它想象成一个foo只有一个默认参数的函数。该表达式foo不会调用它,但foo()会调用它。参数语法必须仍然存在。这与那是一致的。
foo
foo()