#include <iostream>
#include <vector>
int main()
{
// case I: uniform initialization
//
int ii = 100;
// Error: cannot be narrowed from type 'int' to 'double'
// in initializer list
//
double dd{ ii };
// case II: initializer_list
//
std::vector<double> vecDouble{ 1, 2.2 }; // fine!
// case III: initializer_list
//
std::vector<int> vi = { 1, 2.3 }; // error: double to int narrowing
// case IV: intializer_list
// cannot be narrowed from type 'int' to 'double'
//
std::vector<double> vecD2{ ii, 2.2 }; // Error
}
爲什麼這裏caseI不接受int來雙重轉換,但caseII允許轉換。爲什麼矢量<double>接受帶整數元素的initializer_list?
沒有不一致。 '1'不是'int',它是一個整型文字。用'ii'代替它,你會看到和'double'一樣的錯誤。 –
@MilesBudnek,謝謝! – q0987