这个模板语法和无符号类型是什么?

What is this template syntax and unsigned type?

我是 C++ 的新手,我很难理解这段代码:

template <typename T = unsigned>
  1. T = unsigned是什么意思?
  2. 编译器是否对给定类型强制执行 unsigned

这是一个默认的模板参数;它类似于默认函数参数。如果您不输入参数,它将默认为 unsigned [int]。想象一下:

template <typename T = unsigned>
struct foo
{
    T one;
    T two;
};

如果我声明例如 foo<char>,生成的结构将有两个 char 成员。但是默认参数让我声明一个 foo<>,并且 that 结构将有两个 unsigned int 成员,因为 unsigned int 是默认值。

模板有一个类型为 T 的默认参数,在本例中为 unsigned int

unsignedunsigned int 的缩写。

例如;在客户端代码中,如果模板是 class 模板,则可以在声明中显式或不显式添加类型来声明对象;

ABC<> abc1; // the <> is required
ABC<unsigned int> abc2; // equivalent type to abc1
ABC<float> abc3;

.