You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
With any 19.28+ version of Microsoft's compiler, we get some kind of error similar to the following.
error C2678: binary '=': no operator found which takes a left-hand operand of type 'const tpie::packed_array<bool,1>::iter_return_type' (or there is no acceptable conversion)
This is due to a conflict between tpie::packed_array, its iterator, and Microsoft's implementation of the std::sort (shown below). Specifically, the lines with *_First = _STD move(_Val);, and *_Hole = _STD move(*_Prev) try to write into an iterator that has been marked as const (see the declaration).
template <class_BidIt, class_Pr>
_CONSTEXPR20 _BidIt _Insertion_sort_unchecked(const _BidIt _First, const _BidIt _Last, _Pr _Pred) {
// insertion sort [_First, _Last)if (_First != _Last) {
for (_BidIt _Mid = _First; ++_Mid != _Last;) { // order next element
_BidIt _Hole = _Mid;
_Iter_value_t<_BidIt> _Val = _STD move(*_Mid);
if (_DEBUG_LT_PRED(_Pred, _Val, *_First)) { // found new earliest element, move to front_Move_backward_unchecked(_First, _Mid, ++_Hole);
*_First = _STD move(_Val);
} else { // look for insertion point after firstfor (_BidIt _Prev = _Hole; _DEBUG_LT_PRED(_Pred, _Val, *--_Prev); _Hole = _Prev) {
*_Hole = _STD move(*_Prev); // move hole down
}
*_Hole = _STD move(_Val); // insert element in hole
}
}
}
return _Last;
}
This has been identified as part of pull request #257 . But, fixing this issue seems out-of-scope for "Adding CI"? Furthermore, I have no idea how to fix it without any kind of hacks.
The text was updated successfully, but these errors were encountered:
If I should be the devil's advocate for Microsoft, I guess the 19.28+ version is based on const iterator_t is supposed to be akin to a T* const whereas TPIE's iterator is a (const T)* const, i.e. the const should only refer to the pointer, not to the pointed value.
With any 19.28+ version of Microsoft's compiler, we get some kind of error similar to the following.
This is due to a conflict between
tpie::packed_array
, its iterator, and Microsoft's implementation of thestd::sort
(shown below). Specifically, the lines with*_First = _STD move(_Val);
, and*_Hole = _STD move(*_Prev)
try to write into an iterator that has been marked asconst
(see the declaration).This has been identified as part of pull request #257 . But, fixing this issue seems out-of-scope for "Adding CI"? Furthermore, I have no idea how to fix it without any kind of hacks.
The text was updated successfully, but these errors were encountered: