小编典典

模板默认参数

all

如果允许我执行以下操作:

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

为什么我不允许在 main 中执行以下操作?

Foo me;

但我必须指定以下内容:

Foo<int> me;

C++11 引入了默认模板参数,现在我完全无法理解它们。


阅读 71

收藏
2022-07-09

共1个答案

小编典典

笔记:

Foo me;从 C++17
开始,没有模板参数是合法的。请参阅此答案:https
://stackoverflow.com/a/50970942/539997 。

适用于 C++17 之前的原始答案:

你所要做的:

Foo<> me;

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

把它想象成一个foo只有一个默认参数的函数。该表达式foo不会调用它,但foo()会调用它。参数语法必须仍然存在。这与那是一致的。

2022-07-09