使用字面值为模板类型赋值

assigning values to template types by using literals

本文关键字:类型 赋值 字面值      更新时间:2023-10-16

除了使用基本类型的显式初始化或强制转换之外,还有其他方法可以在构造函数中为模板类成员赋值吗?

template <class T>
struct A
{
public:
   T member;
   A() :member(T()) // or :member(static_cast<T>(1.0f))
   {}
};

我想在构造函数中给member赋值1.0。我可不可以不选角?

可以,使用整数,可以隐式转换为任何数字类型:

template <class T>
struct A
{
public:
   T member;
   A() : member(1)
   {}
};
int main()
{
  A<int> a1;
  A<double> a2;
  A<float> a3; 
  return 0;
}

这是怎么回事:

A() :member(1)
{}