Состояние https://godbolt.org/z/4nevPEjre
Не могу придумать, можно ли как-то реализвоать этот же паттерн, избегая использования динамической памяти?
Например, как-то использовать полиморфизм через ссылки, а объекты состояний создавать на стеке 🤔
может у кого-нибудь есть полезные соображения по этому поводу?
Возможно, вы хотите что-то такое?
интересный концепт, спасибо (но для текущей задачи боюсь не влезет, надо поколупать, вроде no-dependencies / header only)
А что именно не влезет? Судя по всему, там есть опциональная поддержка SSO. Сама библиотека — некоторый гибрид std::variant (без явного перечисления типов) и std::any (с явным интерфейсом) Но вот что касается того, насколько готова библиотека для прода — я не уверен, ибо сам не использовал её активно
потому и говорю - надо поколупать, может и подойдёт 😊 (чем и занимаюсь)
Fliweight ?
тут, получается, у меня один объект может быть с множеством разных состояний если я понимаю, легковес - это наоборот 🤔
Ну, где-то похоже...
Я вот такой пример собрал из вашего кода: https://godbolt.org/z/rMG6MbMMo upd: https://godbolt.org/z/aT5c6aGY1 EmptyState, естественно, лишний, но я добавил его, чтобы быть максимально близко к исходному примеру
спасибо большое, буду пробовать её на МК и разбираться с магией, которая задаёт app в состояние то есть te::call( вот тут ) а то штатными средствами через ссылки (https://godbolt.org/z/xxT1n7KhP) как-то нехорошо что ненужные объекты должны где-то висеть постоянно (ладно бы переключились часто, а так просто мёртвый груз в памяти получается)
буду пробовать её на МК и разбираться с магией, которая задаёт app в состояние то есть te::call( вот тут ) И да благославит вас Господь
это да, но хотелось бы чтобы работало и без его помощи 😃
в ведь и справда с перепою благослвовил благословил наличием rvalue ссылок и move-семантики если кому инетерсно, в итоге Состояние (с двусторонней связью Объект<—>Состояние) на стеке вышло совсем простенько (в данном случае) если вдруг кому интересно 🤔 https://godbolt.org/z/T91fe9a7E
вы уверены что хорошая идея брать на что то указатель а потом просто забывать это что то?
в общем смысле - нет, конечно в данном случае - все объекты на стеке, у всех есть строгое время жизни, порядок инициализации и удаления или я что-то упустил 🤔 UDP: ну да, упустил UB упустил, на двух разных компиляторах ведёт себя по-разному, на одном работает на другом - нет
временные объекты живут до окончания выражения в котором они присутствуют
уже вижу, благодарю за уточнение 😊 рано обрадовался случайному результату :-\
Обсуждают сегодня