使用字面值为模板类型赋值
assigning values to template types by using literals
除了使用基本类型的显式初始化或强制转换之外,还有其他方法可以在构造函数中为模板类成员赋值吗?
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)
{}
相关文章:
- 标准库类型的赋值运算符的引用限定符
- 数组类型 int[n][n] 不可赋值,因为表达式必须具有常量值
- 赋值到类型和空大括号. 语法说明
- 结构化绑定初始值设定项表单 { 赋值表达式 } 对于 clang 上的数组类型失败
- C++:将值赋值给原始数据类型(例如布尔值)是原子操作吗?
- 将"std::string {aka std::basic_string}"赋值中的不兼容类型<char>
- 如何为结构类型变量赋值
- 程序无法编译:将 'int (*)[3][3]' 赋值为 'int [9][3][3]' 中的不兼容类型
- 如果类在 C++ 中具有常量或引用类型的非静态数据成员,为什么编译器不提供默认赋值运算符?
- C++不同类型的默认赋值运算符
- 为什么类的赋值运算符的返回类型通常是非常量(而不是常量)引用?
- 将"float*"赋值为"float* [1000]"中的不兼容类型
- 具有抑制移动构造/赋值的类型如何仍被视为可移动类型?
- 具有临时对象的 Fundamenta 数据类型赋值运算符
- 当我们给char数据类型赋值为负值时,它为什么表现得像int数据类型
- 在 c++11 中,指针的"auto"类型赋值是否需要"*"?
- 使用字面值为模板类型赋值
- 使用一个方法实现不同类型赋值的优雅方式,并且没有警告
- 从"int"到非标量类型赋值运算符的转换 - 对象到 int
- 将较小的整数类型赋值给较大的整数类型是否不安全?