初始化列表构造函数接受迭代器

时间:2017-11-06 17:08:48

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

MSVC上的以下compiles

#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中的错误吗?

1 个答案:

答案 0 :(得分:2)

它实际记录在MSDN

  

constexpr initializer_list()noexcept;

     

initializer_list(const InputIterator First,const InputIterator Last);

但它似乎是一个特定于VS的功能