尝试编译以下代码片段
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 位。
最佳答案
std::vector<wchar_t>{ vsize };
尝试创建一个仅包含元素 vsize
的 vector 其中,它从 size_t
进行转换至wchar_t
.
std::vector<wchar_t>(vsize);
构造一个 vector vsize
保留元素,这完全没问题。
关于c++ - 从 size_t 到 wchar_t 的转换需要缩小转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34098496/