Visual Studio: Rückgabetyp von std::type_info::before()
-
Da sich die Signaturen ändern würden gehe ich davon aus, dass so etwas nicht in einem Servicepack ändert...
-
Danke für eure Antworten.
Martin Richter schrieb:
Da sich die Signaturen ändern würden gehe ich davon aus, dass so etwas nicht in einem Servicepack ändert...
Prinzipiell oder wegen "Abwärtskompatibilität" (welche hier ja nicht wirklich relevant ist)? Es wäre schade, wenn solche Fehler ewig weiterexistierten... Du sagst, bei Visual Studio 2010 sieht es noch gleich aus?
-
Definitiv ist das Problem für 2010 noch drin.
Ich habe jetzt einen Bug gefiled, damit das in jedem Fall für VC11 behoben wird.Ihr könnt gerne ein Vote abgeben. Das macht etwas mehr Druck:
https://connect.microsoft.com/VisualStudio/feedback/details/596771/type-info-before-returns-type-of-int-and-not-boolWenn ich etwas neues von der Produktgruppe erfahre melde ich mich, evtl. schreibe ich noch was in meinem Blog...
Das dies in ein SP einfließen wird bezweifle ich ganz schwer. Ich habe schon ganz andere Bugs gemeldet, die es nicht mal wert waren dass man einen Hotfix erzeugt.
Und wenn es gefixed würde, dann wäre ich wirklich extrem überrascht.
-
Schön, dass du dich persönlich darum bemühst. Ich habe jetzt abgestimmt (natürlich dafür).
-
Wenn die Dinge so klar sind, dann ist es ja kein großes Ding!
-
Ich glaube auch nicht dass die das in einem SP/Hotfix beheben werden, weil es ja eigentlich kaum ein Problem ist.
Müsste schon jemand mit Overload-Resolution und/oder Templates rumhantieren dass dabei was rauskommt was nicht passen würde. Abgesehen von einer Warning, die man ja einfach abstellen, ignorieren oder eben durch != 0 unterdrücken kann.Was die Änderung der Signatur angeht: da hat es in Service-Packs glaube ich schon gröbere Änderungen gegeben. Ich erinnere mich da z.B. an den Iostream Bug (Memory Leak, glaube der Bug war in 2005 RTM und wurde in SP1 behoben).
Aber jetzt wo du das schreibst, ich muss direkt mal gucken was aus "meinem" typeid() vs. ADL Bug geworden ist
-
Wenn ich Martin mal vorausgreifen darf: Die Produktgruppe hat sich gemeldet und es wird wohl in VC11 gefixed werden...
-
Vielen Dank für all eure Bemühungen!
Ich hätte ehrlich gesagt nicht gedacht, tatsächlich was zu bewirken...
-
Hi,
in VS 2010 the implentation still seems to be wrong.
To get rid of that warning I used:
inline bool before (const type_info & rhs) const { assert(m_pInfo); return ( ((int) m_pInfo->before(rhs)) == (int)(true) ); }
This will function with both implementations:
bool std::before (const type_info & rhs); // returns 1, 0
int std::before (const type_info & rhs); // returns true, false
-
@sendel
== (int) true
finde ich nicht gut, ich würde einfach mit!= 0
testen.
Einint
gilt auch alstrue
wenn er 2, 3, ... ist, mit== (int) true
kommt aber für alles ausser 1false
raus. Was vermutlich nicht das ist was man ausdrücken wollte.