tuple-Argumente Anzahlbeschränkung

EDN Admin

Well-known member
Joined
Aug 7, 2010
Messages
12,794
Location
In the Machine
Irgendwie habe ich mich gefreut, als ich VS2012 installiert habe, dass jetzt endlich C++11-Unterstützung vorhanden sein soll (ok, über das UI habe ich mich weniger gefreut, was denkt man sich wenn man Menüs in GROSSBUCHSTABEN erzeugt und Fensterfarben einem nicht mehr zeigen, ob das Window aktiv oder deaktiv ist???).
Und jetzt stolpere ich über folgenden einfachen code.
typedef tuple<int, string, BOOL, BOOL, BOOL, BOOL> TFoo;
TFoo t(0, "abc", TRUE, FALSE, FALSE, FALSE);
cout << get<2>(t);
Das lässt sich einfach nicht compilieren und erzeugt Tonnen von Fehlermeldungen.

error C2784: tuple_element<_Index,std::tuple<_Vx0_t,_Vx1_t,_Vx2_t,_Vx3_t,_Vx4_t,std::_Nil>>::_RRtype std::get(std::tuple<_Vx0_t,_Vx1_t,_Vx2_t,_Vx3_t,_Vx4_t,std::_Nil> &&) : could not deduce template argument for std::tuple<_Vx0_t,_Vx1_t,_Vx2_t,_Vx3_t,_Vx4_t,std::_Nil> && from TFoo
c:program files (x86)microsoft visual studio 11.0vcincludetuple(697) : see declaration of std::get
Nach stundenlangem Herumprobieren habe ich in einem Blog gelesen, dass MS in seinen Einstellungen nur maximal 5 (in Worten "Fünf") Argumente zulässt!!!
Also ich glaube nicht, dass in C++11 steht, dass tuples nur bis max 5 Elementen funktionieren zu haben. Aber möglicherweise sieht MS seinen C++ Compiler auch nur als "Spielzeug" an und denkt, dass man für Tic-Tac-Toe Programme auch nicht mehr brauchen wird. In einer früheren Version hat man eine Schranke von 10 gehabt, aber MS hat anscheinend befunden, dass das für die Entwicklergemeinde eigentlich zu viel ist.
Ich hab jetzt nachgesehen, ob in dem Update 3 eine Besserung enthalten wäre. In der Doku dazu steht jedenfalls nichts. Irgendwie will ich mir auch keine Vorversionen installieren, die vermutlich noch weitere Fehler einschleusen.
Warum tuples überhaupt eine Grenze haben sollen, ist mir schleierhaft. Wenn jemand auf die Schnelle ein Array von jeweils 12 booleans haben will, warum nicht? Muss man dafür unbedingt eine Klasse bauen? Aber dann stünde man auch mit dem alten Compiler an der gleichen Stelle der halt gerade 10 Argumente unterstützt hätte.
Irgendwie habe ich den Eindruck, dass eine Implementierung mit vordefinierter Argumentenanzahl als Lösung von einem Ferialpraktikanten kommt.
Eigentlich muss man sich an dieser Stelle fragen, ob man nicht einfach Glück hatte, dass bisher die printf im eigenen Code einfach funktioniert haben.
Falls jemand von MS hier mitliest, möge er meinen Unmut verzeihen. Aber momentan versteh ich die Welt nicht mehr.
Env.: Win8 64 deu, MS VS 2012 Version 11.0.60315.01 Update 2
LG, Thomas

View the full article
 
Back
Top