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 destructorDas schließt eine ganze Menge Typen wie eben auch
std::string
aus.
Wenn dustd::string
verwenden willst, denke ich dass dir nichts anderes übrig bleibt als einen nackten Pointer zu verwenden und dich selbst um dienew/delete
-Aufrufe zu kümmern (so wie ich das sehe erfüllen auchstd::shared_ptr
undstd::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 (?).