VC-2010: Breaking Changes in der STL
Ich habe mein erstes größeres Projekt mal testweise in VS-2010 übernommen und bin sofort über ein Problem in der STL gestolpert. Ein std::set<FOO>::iterator liefert in VC-2010 jetzt eine const FOO & Referenz!
Das Ändern von Objekten in einem std::set war sowieso nur erlaubt, wenn sich die Reihenfolge nicht ändert.
Die Folge ist, dass der nachfolgende Code in VC-2010 nicht mehr kompiliert.
#include <set> struct S_FOO { unsigned long m_dw1, m_dw2; // simplified sample without bool operator< }; class CMySet : public std::set<S_FOO> { public: void SomethingSpecial() { // Order must not be changed! for (iterator it=begin(); it!=end(); ++it) it->m_dw1 = 0; // <----- C3892! } }; int _tmain(int argc, _TCHAR* argv[]) { CMySet myset; myset.SomethingSpecial(); return 0; }
Man erhält den Fehler C3892: ‘it’ : you cannot assign to a variable that is const
Das und noch einige andere Breaking Changes wurden gestern in VC-Blog veröffentlicht:
Themenverwandte Beiträge:
Link für diesen Beitrag | RSS-Feed zu diesem Beitrag
Hinterlassen sie einen Kommentar:
Beachten sie bitte, dass Kommentare evtl. nicht sofort hier erscheinen. Die Kommentare werden zur Moderation an den Webmaster gesendet. Es kann also etwas dauern, bis Ihr Kommentar hier veröffentlicht wird!