【发布时间】:2015-10-23 13:19:09
【问题描述】:
鉴于此代码
#include <iostream>
#include <initializer_list>
#include <string>
int a, b;
int main() {
for (auto p : std::initializer_list<std::pair<int &, std::string>>{
{ a, "a" },
{ b, "b" },
})
{
std::cout << p.second << ": " << p.first << '\n';
}
}
我期待输出
a: 0
b: 0
和gcc 和clang 同意,但是,Visual Studio 2013 Update 5(我的版本,不确定 rextester 使用什么)不同意并打印:
: 0
: 0
Visual Studio 有一个 issue 和 std::initializer_list,但它应该自更新 2 以来已修复。
这是 Visual Studio 中的错误还是我调用了未定义或未指定的行为?
【问题讨论】:
-
我相信这是一个错误,我当时在 connect 上报告了它,并且已经修复了,但我不记得是在更新还是在 2015 年。my test case from back then
-
@NathanOliver 无法复制,适用于 2015 年。
-
@melak47 我不确定我做了什么,但我重新测试了它,它现在可以在我的机器上运行。我删除了我的误导性评论。谢谢:)
标签: c++ visual-studio c++11 undefined-behavior compiler-bug