尝试编译以下代码片段
static std::vector<wchar_t> produceStrings(int n) {
std::size_t vsize = 4 * n;
auto v = std::vector<wchar_t>{ vsize };
// ...
}
VS2015中的给出了错误:
error C2398: Element '1': conversion from 'size_t' to 'wchar_t'
requires a narrowing conversion
用
代替v
的定义
std::vector<wchar_t> v(vsize);
但是,有效。将vsize
替换为例如10,也可以。
为什么?
编辑:我正在编译32位。
答案 0 :(得分:5)
std::vector<wchar_t>{ vsize };
尝试创建一个仅包含元素vsize
的向量,该向量执行从size_t
到wchar_t
的转换。
std::vector<wchar_t>(vsize);
构造一个保留vsize
个元素的向量,这非常好。