以下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/