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

Jac*_*ack 1 c++ templates c++03

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

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

acw*_*ers 6

那是一个默认的模板参数; 它类似于默认的函数参数.如果你没有输入参数,它将默认为unsigned [int].想象一下:

template <typename T = unsigned>
struct foo
{
    T one;
    T two;
};
Run Code Online (Sandbox Code Playgroud)

如果我声明例如a foo<char>,结果结构将有两个char成员.但是默认参数允许我声明一个foo<>,并且结构将有两个unsigned int成员,因为unsigned int它是默认值.