关于
vector<double> v2 = 9; //error: no conversion from int to vector
是否没有隐式转换序列
int
到
vector<double>
因为
std::vector<double>(int)
是明确的吗在没有显式声明的情况下,是否有可能进行 floating-integral 类型转换?
zujrkrfu1#
如果你期望的话,它会是模糊的和非常规的语义
vector<double> v2 = 9;
相当于
vector<double> v2( 9 ) ;
后者不给v2赋值9,参数不是初始化器,而是用类型的默认构造函数确定的初始化值设置向量的长度。要创建一个 single 初始值为9的向量,需要:
v2
vector<double> v2( 1, 9 ) ;
或
std::vector<double> v2 { 9 } ;
用=进行初始化通常应该具有与赋值相似的语义,在这种情况下,v2 = 9在语义上同样是模糊的,或者至少在语法上是不一致的。就像你不能给没有索引的数组赋值一样,你也不应该期望给向量赋值。当然,这样的事情本来是可以定义的,但是在语义上会很混乱。
=
v2 = 9
1条答案
按热度按时间zujrkrfu1#
如果你期望的话,它会是模糊的和非常规的语义
相当于
后者不给
v2
赋值9,参数不是初始化器,而是用类型的默认构造函数确定的初始化值设置向量的长度。要创建一个 single 初始值为9的向量,需要:或
用
=
进行初始化通常应该具有与赋值相似的语义,在这种情况下,v2 = 9
在语义上同样是模糊的,或者至少在语法上是不一致的。就像你不能给没有索引的数组赋值一样,你也不应该期望给向量赋值。当然,这样的事情本来是可以定义的,但是在语义上会很混乱。