Size: a a a

2020 December 05

m

magras in pro.cxx
Andrew
Невызов деструктора при вызванном конструкторе может не быть UB? И я что-то не уверен, что там даже завершение вызова конструкторов гарантируется в таком случае.
Есть std::exit, есть std::terminate. Ни тот ни другой не будут разрушать объекты на стеке.
источник

AS

Angelina Sokolenko in pro.cxx
Всем привет!)
Может, кто-то сможет помочь?https://www.sql.ru/forum/1331518/vsem-privet-pomogite-reshit-zadanie?hl=
источник

S

Stas in pro.cxx
источник

AS

Angelina Sokolenko in pro.cxx
Спасибо
источник

AN

Alexander N in pro.cxx
Хмм flatbuffers выглядит занятно. Интереснее protobufs, даже вроде для Dart есть(просто предполагается взаимодействие между системами на разных языках)  Правда я так понял он тоже использует описания структур(схемы), которые компилятся в код? Усложняет процесс сборки немного.
источник

h

hazer_hazer in pro.cxx
@Antervis вы там спорить начали, а я ушёл.
К чему всё-таки пришли?
Я не хочу сишный вариант, а на плюсах пишу, зачем мне ваш ассемблер))
Я немного не понял, чем такой вариант со статиком плох, если для внутренностей плюсов это не имеет большой разницы, а для меня это понятная структура, когда вместо глобального скоупа, я помещаю методы создания объекта в сам объект, то же, что и namespace создать.
источник

АР

Андрей Руссков... in pro.cxx
hazer_hazer
@Antervis вы там спорить начали, а я ушёл.
К чему всё-таки пришли?
Я не хочу сишный вариант, а на плюсах пишу, зачем мне ваш ассемблер))
Я немного не понял, чем такой вариант со статиком плох, если для внутренностей плюсов это не имеет большой разницы, а для меня это понятная структура, когда вместо глобального скоупа, я помещаю методы создания объекта в сам объект, то же, что и namespace создать.
это не совсем то же самое. Обсуждали малех другое уже, споры ж эволюционируют )
источник

АР

Андрей Руссков... in pro.cxx
а так классика жанра - делай как больше нравится. Но делать тонкую обертку над make_shared или подобное смысла нет
источник

h

hazer_hazer in pro.cxx
Андрей Руссков
это не совсем то же самое. Обсуждали малех другое уже, споры ж эволюционируют )
ну. почему не то же самое.

Единственная проблема, что это не совсем правильно с точки зрения "идей ооп". Ведь я в объект помещаю что-то, что не описывает его, а относится к нему косвенно, это да
источник

h

hazer_hazer in pro.cxx
Андрей Руссков
а так классика жанра - делай как больше нравится. Но делать тонкую обертку над make_shared или подобное смысла нет
я делаю эту обертку, чтоб синглтоны создавать.
Я пишу компилятор, и это — классы типов. Для многих типов это действительно тупо обертка.
Но для Int в будущем sized типы буду создавать, и тогда функция Int::make(int size) будет инициализировать разные синглитоны.
источник

m

magras in pro.cxx
Constantine Drozdov
Я правильно понимаю, что не существует string + string_view?
https://stackoverflow.com/a/47735624/2018010
мда. До такой причины я бы не додумался.
источник

ПК

Побитый Кирпич... in pro.cxx
hazer_hazer
я делаю эту обертку, чтоб синглтоны создавать.
Я пишу компилятор, и это — классы типов. Для многих типов это действительно тупо обертка.
Но для Int в будущем sized типы буду создавать, и тогда функция Int::make(int size) будет инициализировать разные синглитоны.
для синглтона не нужен shared_ptr
источник

h

hazer_hazer in pro.cxx
Побитый Кирпич
для синглтона не нужен shared_ptr
да ту  речь вообще не о shared_ptr
тут не паттерн синглтон. тут Тип — Синглтон. С точки зрения объекта в япе
источник

h

hazer_hazer in pro.cxx
Побитый Кирпич
для синглтона не нужен shared_ptr
то есть. это не синглтон для плюсового юзабилити, а синглтон на уровне структуры япа, который описывается. вотс
источник

m

magras in pro.cxx
hazer_hazer
то есть. это не синглтон для плюсового юзабилити, а синглтон на уровне структуры япа, который описывается. вотс
static std::shared_ptr гарантирует что объект будет жить до конца работы программы, поэтому не имеет смысла считать ссылки на объект. Вместо этого можно возвращать raw pointer и хранить объект с помощью static std::unique_ptr. Я допускаю что по каким-то причинам дальше удобнее работать с shared_ptr, но это может означать что проблема в архитектуре.
источник

ПК

Побитый Кирпич... in pro.cxx
magras
static std::shared_ptr гарантирует что объект будет жить до конца работы программы, поэтому не имеет смысла считать ссылки на объект. Вместо этого можно возвращать raw pointer и хранить объект с помощью static std::unique_ptr. Я допускаю что по каким-то причинам дальше удобнее работать с shared_ptr, но это может означать что проблема в архитектуре.
Да можно просто хранить по значению и возвращать ссылку
источник

D

Danya in pro.cxx
Побитый Кирпич
Да можно просто хранить по значению и возвращать ссылку
Ссылка неудобна, что если мы сделаем так:
auto element = get_singleton();
То у нас будет копия
источник

@N

@urandon Nikita Khom... in pro.cxx
magras
static std::shared_ptr гарантирует что объект будет жить до конца работы программы, поэтому не имеет смысла считать ссылки на объект. Вместо этого можно возвращать raw pointer и хранить объект с помощью static std::unique_ptr. Я допускаю что по каким-то причинам дальше удобнее работать с shared_ptr, но это может означать что проблема в архитектуре.
Неверно. Статик может лежать в динамической библиотеке, и деструктор будет вызван при выгрузке библиотеки
источник

ПК

Побитый Кирпич... in pro.cxx
Danya
Ссылка неудобна, что если мы сделаем так:
auto element = get_singleton();
То у нас будет копия
Будет ошибка компиляции скорее
источник

D

Danya in pro.cxx
Побитый Кирпич
Будет ошибка компиляции скорее
Ну если операции копирования удалены — да
источник