Здравствуйте, Abyx, Вы писали:
A>Сейчас где-то час потратил на то чтобы найти баг в следующем коде:
A>A>#include <vector>
A>struct Foo
A>{
A> Foo() {}
A> void load(/*...*/)
A> {
A> v.clear(); // тут возникает assert "итераторы несовместимы"
A> }
A> std::vector<int> v;
A>};
A>struct Bar
A>{
A> Bar(Foo& f)
A> {
A> //...
A> f.load(/*...*/);
A> }
A>};
A>struct Holder
A>{
A> Holder()
A> : bar(foo)
A> , foo()
A> {}
A> Bar bar;
A> Foo foo;
A>};
A>int main()
A>{
A> Holder h;
A>}
A>
A>Как такого избежать?
Посмотри в сторону boost::base_from_member.