stored_a; };
class A { std::list<A> list; };
при определённом условии сохраняю так, с целью сохранения доступа к нужному элементу внутри конструкции независимо от глубины "залегания"
stored_a = &list.back();
или
stored_a = _some_calctulations_here_;
сохраняю с целью модификации, и, при изменении объекта по указателю, меняется объект по указателю, но не в списке
В векторе я понимаю почему так может происходить, но список по идее не должен реаллоцировать содержимое
Как добиться возможности изменения объекта в списке по указателю? Может какой weak_ptr? Или неправильно сохраняю в указатель?
должно работать. что-то другое кривое
так-с, радует, тогда покопаю
class A { std::list<A> list; } Как это работает? Объект типа А хранит список объектов типа А, каждый из которых хранит объект типа А, где каждый хранит объект типа А, в котором каждый.....
Это не должно работать, A в данном контексте не полный тип
Предлаю назвать такой класс не А, а Матрёшка.
А кто сказал, что std::list требует полного типа?
А формальныц статус - ID?
Вроде да. Может, для каких-то контейнеров и прописаны более строгие условия, но я не помню такого
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4510.html C++17
Т.е. по сути благодоря полноте аллокатора можно использовать неполные типы при инстанцировании контейнеров?
нууу по сути да, я сам в этих деталях не особо разобрался
Обсуждают сегодня