首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VS2013:无法从一个size_t元素创建向量

VS2013:无法从一个size_t元素创建向量
EN

Stack Overflow用户
提问于 2015-05-30 01:54:31
回答 1查看 134关注 0票数 2

我只想确认它确实是个bug,我没有做错什么。它可以用gcc (MinGW)编译得很好:

代码语言:javascript
复制
std::vector<size_t> a({1, 2}); // works
std::vector<size_t> b({1}); // does not work
std::vector<int> c({1}); // works

错误:

代码语言:javascript
复制
error C2440: 'initializing' : cannot convert from 'initializer-list' to 'std::vector<std::seed_seq::result_type,std::allocator<char32_t>>'
EN

回答 1

Stack Overflow用户

发布于 2015-05-30 03:00:16

这可能是VS2013中的一个错误,因为我相信该版本中添加了初始化器列表。请注意,如果您省略了(),它似乎可以正常工作:

代码语言:javascript
复制
std::vector<size_t> b{ 1 }; // works

尝试其他一些变体也会产生一些令人惊讶的结果:

代码语言:javascript
复制
std::vector<size_t> b({ 1 });            // does not work
std::vector<size_t> b1({ 1u });          // does not work
std::vector<long> b2({ 1 });             // does not work
std::vector<long> b3({ 1l });            // works
std::vector<long long> b4({ 1l });       // does not work
std::vector<unsigned int> b5({ 1u });    // does not work
std::vector<size_t> b6{ 1 };             // works
std::vector<unsigned char> b7({ 1 });    // does not work
std::vector<unsigned char> b8({ 1u });   // works
std::vector<unsigned short> b9({ 1 });   // does not work
std::vector<unsigned short> b10({ 1u }); // works
std::vector<unsigned int> b11({ 1u });   // does not work
std::vector<int> b12({ 1u });            // works
std::vector<int> b13({ 1l });            // works

从上面所有不能编译的情况中删除()可以使其正常工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30536090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档