c++ 为什么没有从int到vector的隐式转换序列< double>?

np8igboo  于 2023-01-14  发布在  其他
关注(0)|答案(1)|浏览(150)

关于

vector<double> v2 = 9; //error: no conversion from int to vector

是否没有隐式转换序列

int

vector<double>

因为

std::vector<double>(int)

是明确的吗
在没有显式声明的情况下,是否有可能进行 floating-integral 类型转换?

zujrkrfu

zujrkrfu1#

如果你期望的话,它会是模糊的和非常规的语义

vector<double> v2 = 9;

相当于

vector<double> v2( 9 ) ;

后者不给v2赋值9,参数不是初始化器,而是用类型的默认构造函数确定的初始化值设置向量的长度。要创建一个 single 初始值为9的向量,需要:

vector<double> v2( 1, 9 ) ;

std::vector<double> v2 { 9 } ;

=进行初始化通常应该具有与赋值相似的语义,在这种情况下,v2 = 9在语义上同样是模糊的,或者至少在语法上是不一致的。就像你不能给没有索引的数组赋值一样,你也不应该期望给向量赋值。当然,这样的事情本来是可以定义的,但是在语义上会很混乱。

相关问题