接受迭代器的初始化列表构造函数
Initializer list constructor accepting iterators
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?
}
我用这个行为来回答 , but while doing some research I found that this constructor is not actually in the standard。
我用 /Za
和 /permissive-
标志关闭了语言扩展,但它仍然可以编译。
这是 MSVC 中的错误吗?
它实际上记录在 MSDN:
constexpr initializer_list() noexcept;
initializer_list(const InputIterator First, const InputIterator Last);
但这似乎是 VS 特有的功能
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?
}
我用这个行为来回答
我用 /Za
和 /permissive-
标志关闭了语言扩展,但它仍然可以编译。
这是 MSVC 中的错误吗?
它实际上记录在 MSDN:
constexpr initializer_list() noexcept;
initializer_list(const InputIterator First, const InputIterator Last);
但这似乎是 VS 特有的功能