c++ - 从 size_t 到 wchar_t 的转换需要缩小转换

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

最佳答案

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/

相关文章:

c++ - 有没有有效的方法来获得大 vector ?

c++ - 为什么我可以在通过 'auto' 的基于范围的 for 循环中使用 'std::pair' 而不是 'std::unordered_map' 对非常量的引用?

c++ - 如果没有单击按钮,MFC 鼠标运动 OnMouseMove 事件 nFlags 值?

c++ - 从 qmake 运行脚本以获取内部版本号

c++ - 如何在 C++ 中管理大缓冲区?

c++ - 如何在没有 jsoncpp.dll 的情况下使用 jsoncpp?

c++ - 带有 std::execution::par_unseq 的 std::for_each 不适用于 GCC 但适用于 MSVC

visual-c++ - __NULL_IMPORT_DESCRIPTOR 有什么用(MSVC map 文件)?

c++ - 如何在 Centos 7 上安装更新版本的 libstdc++

c++ - make_unique、工厂方法或客户端 API 的不同设计?