У меня есть простой код, который просто находит любой делитель моего собственного типа BigInt
, который имеет собственный итератор произвольного доступа:
BigIntRangeIterator range(2, x);
auto i = std::find_if(std::execution::par, range.begin(), range.end()
, [&](auto y) {return x % y == 0;}
);
Мой итератор содержит std::vector
, поэтому его нетривиально копировать , Когда я пытаюсь скомпилировать этот код, я получаю сообщение об ошибке std::atomic
:
/usr/include/c++/9/atomic:191: error: static assertion failed: std::atomic requires a trivially copyable type
191 | static_assert(__is_trivially_copyable(_Tp),
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
Означает ли это, что в параллельной версии функции std::find_if
можно использовать только тривиально копируемые итераторы?