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中的错误吗?
答案 0 :(得分:2)
它实际记录在MSDN:
中constexpr initializer_list()noexcept;
initializer_list(const InputIterator First,const InputIterator Last);
但它似乎是一个特定于VS的功能