Das folgende Stück Code prints 0
compiled with vc++ und prints 1
compiled with g++ or clang++:Visual C++ Initialisierung Inkonsistenz mit gcc und Klirren
#include <iostream>
#include <vector>
struct S
{
S() = default;
std::vector<int> v{0};
};
int main()
{
std::vector<S> s{{}};
std::cout << s.front().v.size() << std::endl;
}
Ist es ein Fehler in vC++?
Wenn ein benutzerdefinierter Konstruktor bereitgestellt wird (S() {};
anstelle von S() = default;
) .
Sieht tatsächlich wie ein Compiler-Fehler im VC++ Compiler. –
Ich erinnere mich, dass es eine bevorstehende Änderung in C++ 17 in Bezug auf einen geschweiften Klammerinitialisierer mit genau einem Element gibt. Was passiert, wenn Sie die 0 in eine 13 ändern? –
@ Cheersandthth.-Alf z.B. 'std :: vector v {11,22};' erzeugt das gleiche Problem. –