[boost:icl] is_same undeklariert?



  • Hallo Leute,

    ich hoffe erstmal dass ich hier im richtigen Zweig bin, da ich boost nicht gefunden habe?

    Also ich habe nun in mein Projekt boost:icl eingebunden, bekomme aber diese Fehlermeldung:

    ../boost\icl\type_traits\rep_type_of.hpp:38: Fehler: 'is_same' was not declared in this scope
    , is_same<typename Type::rep, Rep> >::value)
    ^

    Was habe ich gemacht?
    1. http://sourceforge.net/projects/boost/files/boost/1.57.0/ Boost heruntergeladen
    2. Entpackt
    3. Im Qt Projekt die Incluepaths und libs gesetzt

    INCLUDEPATH += C:/Projects/mylibs/boost_1_57_0/ -lboost_filesystem
    LIBS += C:/Projects/mylibs/boost_1_57_0/libs/

    4. Und dann mal einfach eine

    #include <boost/icl/right_open_interval.hpp>
    //..
      boost::icl::right_open_interval<double> _testIntervall;
    

    Leider ergab google auch nichts bzgl der obigen Fehlermeldung?
    Hat da jemand nützliche Hinweise?

    VG
    Lespaul



  • Kann irgendjemand die icl Bibliothek benutzen?

    Bzw hier ein Beispiel mit den Boost libs zum laufen bringen?



  • Gleicher Fehler:
    g++ (GCC) 4.9.2 20150304 (prerelease)
    Name : boost
    Version : 1.57.0-4



  • lespaul schrieb:

    Kann irgendjemand die icl Bibliothek benutzen?

    Bzw hier ein Beispiel mit den Boost libs zum laufen bringen?

    Ich erinnere mich, das ich nach Deinem ersten Posting in diesem Thread eines von deren Beispielen kompiliert habe. Das ging auch. Allerdings "inkludieren" die auch unendlich viel Gedöns.



  • #include <boost/icl/interval_set.hpp> // or any of the others.
    #include <boost/type_traits/is_same.hpp> // icl does not include is_same template on its own
    #include <boost/icl/right_open_interval.hpp>
    
    int main()
    {
        boost::icl::right_open_interval<double> testInterval;
        // ...
    }
    


  • Furble Wurble schrieb:

    Allerdings "inkludieren" die auch unendlich viel Gedöns.

    Ich wollt mich auch auf den boost/icl/ Ordner beschränken, aber die Kette wollte nicht abbrechen, sodass ich nun alles im boost/ kopiert habe..



  • 5cript schrieb:

    #include <boost/icl/interval_set.hpp> // or any of the others.
    #include <boost/type_traits/is_same.hpp> // icl does not include is_same template on its own
    #include <boost/icl/right_open_interval.hpp>
    

    Danke, die beiden anderen Includes haben gefehlt.



  • Nun habe ich wieder ein ähnliches Problem. Folgende Header habe ich inzwischen inkludiert:

    #include <boost/icl/split_interval_map.hpp>
    #include <boost/icl/discrete_interval.hpp>
    #include <boost/icl/type_traits/is_discrete.hpp>
    #include <boost/icl/interval_set.hpp>
    #include <boost/type_traits/is_same.hpp>
    #include <boost/icl/right_open_interval.hpp>
    

    Und nur eine Membervariable in meienr klasse erstellt:

    //..
        boost::icl::discrete_interval<double>      _intervall;
    //..
    

    Ich bekomme

    boost\static_assert.hpp:78: Fehler: static assertion failed: (icl::is_discrete<DomainT>::value)
    # define BOOST_STATIC_ASSERT( ... ) static_assert(__VA_ARGS__, #__VA_ARGS__)

    Deswegen habe ich auch die is_discrete.hpp inkludiert wie oben zu sehen.

    Es fehlt doch weider was?



  • Komischerweise geht:

    boost::icl::discrete_interval<int>      _intervall;
    

    😕



  • lespaul schrieb:

    Komischerweise geht:

    boost::icl::discrete_interval<int>      _intervall;
    

    😕

    Ohne mich selbst besonders mit Boost ICL auszukennen, sagt mir "discrete" dass es sich dabei wahrscheinlich um ein Intervall auf diskreten Werten handelt und nicht über einem Kontinuum wie den reellen Zahlen. Die Fehlermeldung, bei der es sich um ein Static Assert handelt, legt ebenfalls nahe, dass der Typ, der den Definitionsbereich (domain) definiert "diskret" sein muss, also vermutlich ein Integer-Typ.

    Ich vermute, dass es eine spezielle Klasse für solche Intervalle über ganzen Zahlen gibt, da diese z.B. keine besondere Behandlung für (halb-)offene Intervalle benötigen (für ganze Zahlen ist [a, b) dasselbe wie [a, b - 1], wenn ich die mathematische Definition noch korrekt in Erinnerung habe).

    Gruss,
    Finnegan



  • Finnegan schrieb:

    dass es sich dabei wahrscheinlich um ein Intervall auf diskreten Werten handelt und nicht über einem Kontinuum wie den reellen Zahlen.

    Ja der Groschen wollte gestern einfachnicht fallen, danke für die Aufklärung!

    Das ist sehr Schade, dieses Beispiel gefiel mir sehr: http://www.joachim-faulhaber.de/icl/overlap__counter_8cpp.html

    Dort gab es beispielsweise Intervalle a,b, kämen dann neue Intervalle c,d hinzu, wurde es automatisch zu:

    a,b
    b,c
    c,d

    Sowas für doubles käme mir gelegen. Naja..

    Danke nochmal!


Anmelden zum Antworten