从size_t转换为wchar_t需要缩小转换

时间:2015-12-04 22:24:17

标签: c++ c++11 visual-c++ vector visual-studio-2015

尝试编译以下代码片段

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位。

1 个答案:

答案 0 :(得分:5)

std::vector<wchar_t>{ vsize };尝试创建一个仅包含元素vsize的向量,该向量执行从size_twchar_t的转换。

std::vector<wchar_t>(vsize);构造一个保留vsize个元素的向量,这非常好。