2017-11-06 3 views
1

Die folgende compiles auf MSVC:Initialisiererliste Konstruktor akzeptieren Iteratoren

#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? 
} 

benutzte ich dieses Verhalten another question zu beantworten, aber während einige der Forschung fand ich, dass dieser Konstruktor ist not actually in the standard.

Ich habe Spracherweiterungen mit den /Za und /permissive- Flags deaktiviert, aber es kompiliert noch.

Ist das ein Fehler in MSVC?

+0

Hmm eine VS-spezifische Funktion zu sein. Warum der Downvote, frage ich mich? – wally

+0

Weder gcc noch clang kompilieren das, also sieht es wie eine VS-Erweiterung aus – bolov

+0

@bolov Würdest du es als Fehler betrachten, dass das '/ Za' Flag ignoriert wird? – wally

Antwort

2

Es dokumentiert tatsächlich in MSDN:

constexpr initializer_list() noexcept;

initializer_list (const InputIterator Zuerst, const InputIterator Last);

aber es scheint

Verwandte Themen