none
Bug im VS2010 compiler? RRS feed

  • Frage

  • #include <vector>
    
    using namespace std;
    
    
    
    void main() {
    
    	vector<float*> v;
    
    	v.insert(v.begin(),NULL);//vs2010 compiler bug? - interpreting 0 as int instead of as void* bzw float*
    
    }
    
    

    compiliert mit früheren versionen einwandfrei...

    mit 2010 erwartet der compiler beim zweiten argument int wobei null ja eher void* bzw float* sein sollte...

    daraufhin kommt es natürlich zu einem compiler fehler und abbruch...

    Freitag, 27. August 2010 13:31

Antworten

  • Hi Devil,

    also das ist eigentlich das falsche forum es gehört ins C++ Forum....

    Also im VS2010 C++ gibts neuerdings für den Pointer auf Null und heisst nullptr.

    Damit sollte es laufen ;-)

    Samstag, 28. August 2010 14:25
  • Ich habe Kontakt mit der Prodzuktgruppe aufgenommen.
    Das Problem liegt am "perfect forwarding"!

    Bzgl. pair wird das gefixed werden, und so weit ich es verstehe auch für insert statements, allerdings alles erst in VC11. Aber diese Info ist mehr oder weniger nicht offiziell.

    Das Problem ist, dass der Standard bzgl. C++0x hier noch Änerdungen bekam aber diese in VC10 nicht mehr einfließen konnten!

    Wenn es für Dich ein Problem darstellt, dann kontaktiere den MS-Support. Vielleicht bekommst Du einen Hotfix wenn Du viele Gründe hast...


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Dienstag, 31. August 2010 08:02
    Moderator

Alle Antworten

  • Hi Devil,

    also das ist eigentlich das falsche forum es gehört ins C++ Forum....

    Also im VS2010 C++ gibts neuerdings für den Pointer auf Null und heisst nullptr.

    Damit sollte es laufen ;-)

    Samstag, 28. August 2010 14:25
  • Das ist definitv kein Fehler NULL ist eben kein (void*)0 sondern eben nur 0. Auch VC 2008 und 2005 hätten hier ein Problem.

    Wenn Du einen Zeiger meinst müsstest Du es angeben.

    Brian hat Dich auf die C++0x Erweiterung nullptr als bessere Lösung ja schon hingewiesen.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Samstag, 28. August 2010 15:41
    Moderator
  • Das ist definitv kein Fehler NULL ist eben kein (void*)0 sondern eben nur 0. Auch VC 2008 und 2005 hätten hier ein Problem.


    das ist eben nicht so - mit vs2005 wie auch vs2008 compiliert und läuft das beispiel oben wie erwünscht... (in dem fall wohl als float*)

    ich stelle dieses problem in nahezu allen libs fest die ich gerade verwende (lua,luabind,boost und weitere)..

    haben bisher immer ohne probleme compiliert - tun es immernoch mit vs2008 aber vs2010 bringt an den entsprechenden stellen eben einen fehler...

    Sonntag, 29. August 2010 12:56
  • Du hast Recht!

    Ich vermute allerdings keinen Bug im Compiler sondern eher in der STL.
    ein int 0 wird korrekt vom Compiler auch für einen void * const & umgewandelt.

    Ich schau mit das noch mal an...


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Sonntag, 29. August 2010 13:47
    Moderator
  • Also ich bin soweit fündig geworden.

    https://connect.microsoft.com/VisualStudio/feedback/details/520043/error-converting-from-null-to-a-pointer-type-in-std-pair?wa=wsignin1.0

    Bekannt ist das Problem. Allerdings wurde es nicht als Bug qualifiziert sondern mit By-Design geschlossen. (Leider wie so oft!)


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Montag, 30. August 2010 06:29
    Moderator
  • Ich habe Kontakt mit der Prodzuktgruppe aufgenommen.
    Das Problem liegt am "perfect forwarding"!

    Bzgl. pair wird das gefixed werden, und so weit ich es verstehe auch für insert statements, allerdings alles erst in VC11. Aber diese Info ist mehr oder weniger nicht offiziell.

    Das Problem ist, dass der Standard bzgl. C++0x hier noch Änerdungen bekam aber diese in VC10 nicht mehr einfließen konnten!

    Wenn es für Dich ein Problem darstellt, dann kontaktiere den MS-Support. Vielleicht bekommst Du einen Hotfix wenn Du viele Gründe hast...


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Dienstag, 31. August 2010 08:02
    Moderator