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

时间:2015-07-23 19:50:49

标签: c++ templates c++03

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

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

2 个答案:

答案 0 :(得分:6)

这是默认的模板参数;它类似于默认的函数参数。如果您没有参与论证,则默认为unsigned [int]。想象一下:

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

如果我声明例如foo<char>,则生成的结构将包含两个char成员。但是默认参数允许我声明foo<>,而 结构将有两个unsigned int成员,因为unsigned int是默认值。

答案 1 :(得分:1)

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

unsignedunsigned int的简写。

例如;在客户端代码中,如果模板是类模板,则可以声明对象,无论是否向声明显式添加类型;

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

Related question, regarding the syntax