【发布时间】:2018-06-05 08:44:30
【问题描述】:
我尝试使用 boost::lockfree:queue 对迭代器进行排队,但在 static_assert 上编译失败(仅限调试模式)
boost::has_trivial_destructor::value
和
boost::has_trivial_assign::value
代码:
using list_it_t = typename std::list<Elem<T, dimens>>::iterator;
[...]
boost::lockfree::queue<list_it_t> iterators(1024);
其中 Elem 是一种 POD 类型,但是该行为也可以通过其他迭代器重现。
我一直认为迭代器同时满足这两个条件?!它们在哪些方面是不可分配或不可破坏的?
我能否以某种方式仍然使用迭代器,或者我是否必须更改为元素上的指针?我正在遍历列表并将迭代器推送到队列中以供其他线程处理。
规格:
- MSVC v141
- 提升 1.65
【问题讨论】: