Size: a a a

2020 September 29

PS

Pavel Samolysov in pro.cxx
Так я не про type erasure, а про решение от @khudobin
источник

ПК

Побитый Кирпич... in pro.cxx
Pavel Samolysov
Да, то что аллокация здесь наверное не самая большая проблема. А пример хорош как раз для случаев, когда заранее известен набор типов данных и не хочется размениваться на лишнюю индирекцию при работе с ними через указатели/ссылки/virtual ради динамического полиморфизма, который здесь не особо нужен/полезен. Если добавится еще какой-нибудь CTriangle, то конечно этот код придется переписывать. Но если вероятность появления CTriangle невысока, а быстродействие очень важно, то такой подход имеет право на жизнь
Если множество типов фиксированно (типы value в реестре винды), то тут вариант идеально залетает
источник

O

Oleksandr in pro.cxx
Pavel Samolysov
С вариантом та же проблема - нужно заранее знать весь набор используемых типов. Для расширяемости придумали std::any (как раз type erasure), но, насколько помню, там нужна лишняя аллокация, да и присвоить такому any можно что угодно.
Разве внутри std::any аллокация гарантирована? Там же вроде SOO используется
источник

PS

Pavel Samolysov in pro.cxx
Этого я не знаю
источник

АР

Андрей Руссков... in pro.cxx
кстати интересный вопрос. По идее, требования к std::any не запрещают использовать SOO, но кажется, что так реализовывать std::any логично только для тривиальных типов
источник

O

Oleksandr in pro.cxx
Андрей Руссков
кстати интересный вопрос. По идее, требования к std::any не запрещают использовать SOO, но кажется, что так реализовывать std::any логично только для тривиальных типов
В msvc SOO используется и для тривиальных, и для "небольших" типов
источник

АР

Андрей Руссков... in pro.cxx
иначе придется хранить указатели на операторы присвоения и конструкторы, и буфер получится уже не маленьким.
источник

O

Oleksandr in pro.cxx
Там три стратегии хранения объектов afaik
источник

O

Oleksandr in pro.cxx
Андрей Руссков
иначе придется хранить указатели на операторы присвоения и конструкторы, и буфер получится уже не маленьким.
Да, msvc так и делает
источник

АК

Александр Караев... in pro.cxx
Андрей Руссков
иначе придется хранить указатели на операторы присвоения и конструкторы, и буфер получится уже не маленьким.
ну их можно хранить в отдельной статической табличке, а указатель на неё в объекте
источник

V

Vladimir in pro.cxx
Vladimir
Вы поняли ответ который вам дали с лямбдой или объяснить детальнее?
Не очень
источник

V

Vladimir in pro.cxx
Я думаю отвернуть тот блок в функцию
источник

V

Vladimir in pro.cxx
И вызвать ее четыре раза
источник

V

Vladimir in pro.cxx
Vladimir
Не очень
У вас кусок кода, в котором есть какие то параметры - то ли 4, то ли 2. Он дублируется. Вынесите этот код в функцию и вызывайте ее везде где был этот кусок.
Бонусом предложили создать эту функцию как лямбда функцию.
источник

DF

Dollar Føølish in pro.cxx
Привет. Подскажите пожалуйста, что кроме буста, можно почитать на тему построения хороших абстракций для платформозависимых вещей. Конечно в рамках с++ .

Поясню, почему именно ' хороших ' абстракций: либ много , но я не знаток, поэтому хотелось бы получить выжимку то есть книги либо библиотеки которые именно вам нравятся
источник

IZ

Ilia Zviagin in pro.cxx
Dollar Føølish
Привет. Подскажите пожалуйста, что кроме буста, можно почитать на тему построения хороших абстракций для платформозависимых вещей. Конечно в рамках с++ .

Поясню, почему именно ' хороших ' абстракций: либ много , но я не знаток, поэтому хотелось бы получить выжимку то есть книги либо библиотеки которые именно вам нравятся
Что за вопрос...

Да ничего нельзя почитать на тему эту.
Либо можно построить хорошую абстракцию, либо нельзя.
Если можно, то ты её либо построишь, если есть навыки и знания и вдохновение,
либо нет, если чего-то из этого нет.
источник

DF

Dollar Føølish in pro.cxx
Как ето нельзя
источник

DF

Dollar Føølish in pro.cxx
Когда нельзя?
источник

DF

Dollar Føølish in pro.cxx
Препроцессор умеет все!
источник

IZ

Ilia Zviagin in pro.cxx
Dollar Føølish
Препроцессор умеет все!
ты про хорошие абстракции или про препроцессор?
источник