lockfree::queue



  • Hallo Leute,

    folgender Code kompiliert bei mir nicht:
    boost::lockfree::queuestd::string queue;

    Wisst ihr was ich falsch mache? Ich lese in manchen Quellen im internet von trivialen kopierkonstruktoren etc... und in anderen lese ich davon das nur POD zulässig sind als templatisierungsparameter...

    Was ist denn nun richtig?

    Nein ich bin nicht Blurry333



  • Locker schrieb:

    Wisst ihr was ich falsch mache?

    Nein, du verschweigst ja die Fehlermeldung. Bist wohl doch Blurry333.



  • Locker schrieb:

    Wisst ihr was ich falsch mache? Ich lese in manchen Quellen im internet von trivialen kopierkonstruktoren etc... und in anderen lese ich davon das nur POD zulässig sind als templatisierungsparameter...

    In diesem Fall hilft oft die Dokumentation weiter. In dieser steht (für Boost 1.57.0):

    Requirements:
    T must have a copy constructor
    T must have a trivial assignment operator
    T must have a trivial destructor

    Das schließt eine ganze Menge Typen wie eben auch std::string aus.
    Wenn du std::string verwenden willst, denke ich dass dir nichts anderes übrig bleibt als einen nackten Pointer zu verwenden und dich selbst um die new/delete -Aufrufe zu kümmern (so wie ich das sehe erfüllen auch std::shared_ptr und std::unique_ptr die o.g. Anforderungen nicht).

    Finnegan

    P.S.: Ja, die Fehlermeldung wäre nett gewesen. Ich vermute dass es sich wahrscheinlich um sowas wie ein static_assert handelt, das prüft ob die o.g. Bedingungen erfüllt sind, und das vor die Wand läuft (?).


Anmelden zum Antworten