Probleme mit Boost.Random



  • Tach zusammen,

    zwar bereits selbst empfohlen, hab ich nun Probleme bei der Verwendung der oben genannten Lib. 🙄

    Wenn ich das von auf www.boost.org genannte Kurzbeispiel oder auch die random_demo.cpp kompilieren möchte, spuckt mir mein Compiler folgende Fehler aus:

    c:\boost-1.30.2\boost\random\uniform_01.hpp(44) : error C2275: "_STL::numeric_limits<`template-parameter258'>::is_integer" : Ungültige Verwendung dieses Typs als Ausdruck
    c:\boost-1.30.2\boost\random\uniform_01.hpp(95) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'boost::uniform_01<UniformRandomNumberGenerator,RealType>'
    c:\boost-1.30.2\boost\random\uniform_01.hpp(44) : error C2027: Verwendung des undefinierten Typs "STATIC_ASSERTION_FAILURE"
    c:\boost-1.30.2\boost\static_assert.hpp(29) : Siehe Deklaration von 'STATIC_ASSERTION_FAILURE'
    c:\boost-1.30.2\boost\random\uniform_01.hpp(95) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'boost::uniform_01<UniformRandomNumberGenerator,RealType>'

    Fehler beim Ausführen von cl.exe.

    Ausschlaggebend ist dabei wohl die erste Meldung - ein Blick in die Hilfe verriet, daß ich als Template-Parameter keine typdef-Angaben machen darf - stimmt das denn? Was sonst könnte diesen Fehler hervorrufen? Ich verwende VC++6 SP5 und STLport 4.6. Die Fehler treten bei Boost 1.30.2, aber auch bei der aktuellen 1.31.0 auf.



  • grund:

    VC++6



  • Kein Workaround möglich? In der Boost-Doku steht schließlich nix davon, daß ich Boost.Random nicht mit VC6 benutzen kann...

    Oder war das nur der halbernste Spruch eines Linux-Verfechters?



  • Ne, liegt eher daran das VC++6 noch am alten Standard hängt.
    Was du aber machen könntest wäre das Visual Studio.NET 2003 ToolKit runterzuladen und damit deinen compiler upzugraden. (einfach die dateien in dem Package mit denen deines VC6 überschreiben).
    Das geht Problemlos und dann haste auch endlich mal was ordentliches 😉



  • Nun gut. Vielen Dank, k1ro.



  • k1ro schrieb:

    Ne, liegt eher daran das VC++6 noch am alten Standard hängt.

    alter C++ Standard? Es gibt doch nur einen.



  • kingruedi schrieb:

    k1ro schrieb:

    ...

    alter C++ Standard? Es gibt doch nur einen.

    aktuell haben wir doch den C++98 Standard.
    Naja, VC++6 arbeitet halt noch davor, keine Ahnung was das für ein "Standard" war, aber er war älter, also nenn ich ihn einfach mal.. 'alter Standard'



  • Nein, Visual C++ 6.0 versucht den C++98 Standard zu erfüllen, dass ist ja das traurige daran. Aber als der rauskam, waren die anderen C++ Compiler auch nicht besser, nur ist der VC6 der einzige, der sich seit ca 6 Jahren, durch die ganzen Einsteiger Bücher, hält, die dann mit den üblichen Problemen ankommen.



  • hm...
    dann hab ich das ganze bisher falsch verstanden.
    Imo hätts nach "meiner" these aber mehr sinn gegeben 😉



  • kingruedi schrieb:

    Nein, Visual C++ 6.0 versucht den C++98 Standard zu erfüllen, dass ist ja das traurige daran

    Tatsächlich? Hattest du da mal mit Microsoft drüber gesprochen oder wie?
    Deckt sich nämlich nicht so recht mit meinen Informationen. Zum einen gab es den VC 6.0 bereits vor dem Standard und zum anderen hat MS, wie viele andere Hersteller auch, den Wert von standardkonformen C++ Compilern erst recht spät erkannt einen solchen Compiler auch erst spät zu einer Priorität ernannt. Das liegt sicher u.a. daran, dass die C++ Community erst seit ein paar Jahren voll auf Standard-C++ abfährt.
    Der größte Schwachpunkt des VC 6.0 ist die magere Templateunterstützung.
    Bedenkt man dabei aber, dass der durchschnittliche C++ Programmierer 1997 templatetechnisch selten über ein Container<T> hinausgegangen ist, relativiert dies diesen Schwachpunkt etwas.
    Die wichtigsten anderen Neuerungen unterstützt der VC 6.0 recht ordentlich (die neuen Casts, neuere Schlüsselwörter wie explicit und mutable, namespaces...).

    Der VC 6.0 ist nach heutigen Maßstäben sicher veraltet und hat seine guten Jahre hinter sich. Deshalb hat MS aber mittlerweile ja auch neuere Compiler im Angebot.

    Für "normale" Projekte (ohne cutting-edge-Template-Magic) reicht der VC 6.0 immer noch. Und deshalb ist er auch weiterhin so verbreitet.
    Ein ähnliches Phänomen hat man ja auch mit dem gcc 2.95.


Log in to reply