从size_t到wchar_t的转换需要缩小转换范围
Conversion from size_t to wchar_t requires a narrowing conversion
尝试编译以下代码片段
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);
然而,它是有效的。用例如10替换vsize
也同样有效。
为什么?
编辑:我正在为32位编译。
std::vector<wchar_t>{ vsize };
尝试创建一个仅包含元素vsize
的向量,该向量将执行从size_t
到wchar_t
的转换。
std::vector<wchar_t>(vsize);
构造了一个保留了vsize
元素的向量,这是非常好的。
相关文章:
- 奇怪的缩小转换在 g++ 编译器中加倍到浮点警告
- 如何在不强制转换每个参数的情况下删除初始值设定项列表中从 int 到 char 的缩小转换?
- std::map, std::unordered_map - 缩小初始值设定项列表中的转换范围
- 为什么显式构造被视为(隐式)缩小转换?
- 为什么C++在将浮点数转换为字符时没有显示缩小转换错误?
- 缩小从double到float的转换
- 为什么 gcc 警告只针对统一初始化缩小转换范围?
- C++ - 从 "int" 到 "unsigned char" 的缩小转换无效
- 标准是否阻止在可变参数模板中使用足够小的文本值缩小文本转换范围
- 缩小从字符到双倍的转换
- gcc在 运算符中缩小转换
- 从'::size_t'转换为'int'需要缩小转换范围
- 列表初始化时需要缩小转换范围
- 缩小从"int"(常量表达式)到"无符号int"的转换 - MSVC vs gc
- 从'double'转换为'int'需要缩小转换范围
- 从“ int”到'int16_t {aka short int}'内部{}的“((int)a) -1)”的缩小转换
- 正在缩小MSVC中到布尔警告的转换范围
- 当float转换为int时,此代码中是如何/为什么进行缩小的
- 将转换范围缩小到更大的类型(然后再回来)
- 为什么缩小转换范围不能防止错误类型的map.insert()失败