显式初始化valarray的模糊性为零?

时间:2014-09-10 14:28:42

标签: c++ initialization valarray

std::valarray< double > myArray(3)生成长度为3的valarray,初始化为零。

std::valarray< double > myArray(1,3)生成长度为3的valarray,初始化为1。

std::valarray< double > myArray(0,3)生成error: call to constructor of 'std::valarray<double>' is ambiguous

我当然可以使用myArray(3)并添加一条评论,确认这是初始化为零,但是为了我自己的理解,我希望有人可以解释为什么这是不明确的 - 它是否与另一个构造函数冲突我错过了哪种方式?

1 个答案:

答案 0 :(得分:4)

您的第三次调用与构造函数valarray (const T* p, size_t n);冲突。这是因为0很容易转换为NULL指针,因为它是一个double。您可以通过明确声明使用double来解决此问题:

std::valarray< double > myArray((double)0,3)