c++ - 接受迭代器的初始化列表构造函数

标签 c++ visual-c++ visual-studio-2017 initializer-list

以下compiles在 MSVC 上:

#include <initializer_list>
#include <iterator> 

int main()
{
    int parameters[4]{1, 2, 3, 4};
    auto b = std::begin(parameters); 
    auto e = std::end(parameters);
    std::initializer_list<int> il(b,e); // where is the constructor specified in the standard?
}

我用这种行为来回答 another question ,但是在做一些研究时我发现这个构造函数是 not actually in the standard

我使用 /Za/permissive- 标志关闭了语言扩展,但它仍然可以编译。

这是 MSVC 中的错误吗?

最佳答案

它实际上记录在MSDN中:

constexpr initializer_list() noexcept;

initializer_list(const InputIterator First, const InputIterator Last);

但这似乎是 VS 特有的功能

关于c++ - 接受迭代器的初始化列表构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47142214/

相关文章:

c++ - 使用 automake 构建 gSoap 应用程序时的不同行为

c++ - 如何将整数和小数分隔为两个不同的变量

c++ - Libcurl得到响应 “415 Unsupported Media Type”但使用Curl.exe可以很好地工作

c++ - 如何使用 MPIR 库计算 GCD

c++ - 循环导致无法到达的断点

visual-studio-2017 - 为什么 Visual Studio 2017 使用 TLS 1.0?

node.js - 创建 NodeJS 项目时出现 Visual Studio System.ValueTuple 程序集错误

c++ - boost::spirit 解析器返回空 vector

c++ - CHUNKSTATE 和 STAT_CHUNK 未定义

c++ - 从预定义类型转换为自己的 CMyString