hi, all,
as new to boost, i am looking for a solution to combine boost::lockfree::queue with std::function, i.e. boot::lockfree::queue<std::function>, but unfortunately, the implementation of the lockfree queue required the T to be trivial assignable and trivial destructible.
with some basic investigation to the implementation of boost::lockfree::queue, the assignment operator is using when pop or unsynchronized_pop, it calls detail::copy_payload, which is using operator= or constructor and operator=. though overloaded assignment operator may use more time and cause the pop function to wait for longer time, i do not see it would block the logic.
for the destruction, queue implementation always calls pool.template destruct instead deallocate, which means even for a default destructor, it will also be called.

so is this a defect or by-design behavior of the lockfree queue?

thank you in advanced.

    .Hzj_jie