1
イテレータを引数としてラムダ関数を呼び出した後、奇妙な動作が発生しました。アサーションに失敗した "ベクトルイテレータは互換性がありません"を生成します。アサーションは、なぜこれが起こるんさラムダ関数の引数としてC++ iteratorがアサーションに失敗しました: "ベクトルイテレータが互換性がありません"
void std::_Vector_const_iterator<_Myvec>::_Compat(const _Myiter& _Right) const {
// test for compatible iterator pair
if (this->_Getcont() != _Right._Getcont()) {
_DEBUG_ERROR("vector iterators incompatible");
_SCL_SECURE_INVALID_ARGUMENT;
}
}
質問にvector.hに上げて
std::vector<LAYOUT> Layouts;
// fill vector...
auto it = Layouts.begin();
while (it != Layouts.end()) {
// do something...
auto fn= [Layouts] (auto i) -> void {
while (i != Layouts.end()) { // <- ASSERTION RAISED HERE
// do something...
i++;
}
};
fn(it);
it++;
}
:
私のコードは次のようになりますか?
私はこれに遭遇しなければならない私は、この情報を他の開発者を支援するために、問題を私に思い出させるために記事[自己解答](https://stackoverflow.com/help/self-answer)を参照していますもう一度問題。 – bkausbk