首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >窃听器还是不?Visual 2013预览std::带有std::string的向量初始化程序列表

窃听器还是不?Visual 2013预览std::带有std::string的向量初始化程序列表
EN

Stack Overflow用户
提问于 2013-07-09 12:14:38
回答 1查看 1.6K关注 0票数 3

最后他们做到了。MSVC12编译器现在允许统一初始化。但我发现,它的工作方式不同于带有-std=C++11标志的GNU GCC 4.8.1。

请考虑以下代码:

代码语言:javascript
复制
#include <vector>
#include <string>
#include <iostream>

struct Data
{
    Data(const std::string& name, int x):
        m_Name(name),
        m_X(x)
    {}

    std::string m_Name;
    int m_X;
};

std::vector<Data> datas = 
{
    Data("one", 1),
    Data("two", 2),
    Data("three", 3),
};

int main()
{
    for(auto it = datas.begin(); it != datas.end(); ++it)
        std::cout << it->m_Name << " "  << it->m_X << "\n";

}

与GCC的结果(如预期一样):

代码语言:javascript
复制
one 1
two 2
three 3

(理想环节)

MSVC12的结果:

代码语言:javascript
复制
 1
 2
 3

就像字符串还没有初始化一样。

问题:

  • 根据C++11标准,我的代码片段语法正确吗?
  • GCC的行为是规范的还是某种延伸?
  • MSVC行为是标准的还是错误的?
EN

回答 1

Stack Overflow用户

发布于 2013-09-23 14:43:54

这可能是VS2013预览中的一个bug。当前VS2013 RC生成的二进制文件的输出与g++一致。

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

https://stackoverflow.com/questions/17547913

复制
相关文章

相似问题

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