Size: a a a

2020 October 28

AG

Anton Glukhov in pro.cxx
Constantine Drozdov
Этого уже в принципе нельзя избежать - виртуальный вызов тут будет до тех пор, пока вы не запишете C<P1>::exec неполиморфно вектором прерывания
Даже не знаю тогда. Но я не вижу возможности насоздавать объектов С под каждый тип.
источник

CD

Constantine Drozdov in pro.cxx
Anton Glukhov
Даже не знаю тогда. Но я не вижу возможности насоздавать объектов С под каждый тип.
Не объектов С под каждый тип, типов С под каждый тип
источник

CD

Constantine Drozdov in pro.cxx
Вам не обязательно смешивать преобразование в синглтон и заворачивание в контейнер
источник

AG

Anton Glukhov in pro.cxx
Constantine Drozdov
Не объектов С под каждый тип, типов С под каждый тип
не хватает короче матчисти мне, чтобы осознать. у меня в голове строится картинка что, каждый раз когда мы хотим сохранить Package. в контейнер нам надо создавать новый контейнер
источник

CD

Constantine Drozdov in pro.cxx
Anton Glukhov
не хватает короче матчисти мне, чтобы осознать. у меня в голове строится картинка что, каждый раз когда мы хотим сохранить Package. в контейнер нам надо создавать новый контейнер
А почему нет?
источник

AG

Anton Glukhov in pro.cxx
ну давайте еще пример с сохранением Package 2 раза с перезаписью. Т.е. сначала сохраняем P1<2,6>p1 а потом P2<1>p2
источник

CD

Constantine Drozdov in pro.cxx
А чем принципиально отличается создание нового контейнера с переприсваиванием от переприсваивания элемента контейнера?
источник

AG

Anton Glukhov in pro.cxx
Constantine Drozdov
А чем принципиально отличается создание нового контейнера с переприсваиванием от переприсваивания элемента контейнера?
ага. так чуть яснее. А где и как exec реализована? По хорошему она должна быть реализована во фреймворке и конечные разработчики не должны ее трогать
источник

CD

Constantine Drozdov in pro.cxx
Anton Glukhov
ага. так чуть яснее. А где и как exec реализована? По хорошему она должна быть реализована во фреймворке и конечные разработчики не должны ее трогать
синглтон полиморфного CBase отдельно, там на примитивном уровне
namespace {
   std::unique_ptr<CBase> & container_storage_ref() {
          static std::unique_ptr<CBase> object;
          return object;
   }
}
void set_container(std::unique_ptr<CBase> container) {
    container_storage_ref() = std::move(container);
}
void exec_container() {
  container_storage_ref()->exec();
}
std::unique_ptr это полиморфное хранилище, это может быть и variant-like и пимплы с ограниченным размером и много чего еще
источник

CD

Constantine Drozdov in pro.cxx
можно еще нашаманить техники и вернуть указатель на функцию exec принимающую CBase*, "поднять" дальше виртуальный вызов
источник

CD

Constantine Drozdov in pro.cxx
Там есть схема для TypeErasure которая позволяет подружиться лишний раз с кэшом, вместо хранения виртуальной функции в таблицы создаётся указатель на функцию void exec(CBase*) как поле в CBase, класс на один указатель больше, на один кэшмисс меньше
источник

AG

Anton Glukhov in pro.cxx
Constantine Drozdov
Там есть схема для TypeErasure которая позволяет подружиться лишний раз с кэшом, вместо хранения виртуальной функции в таблицы создаётся указатель на функцию void exec(CBase*) как поле в CBase, класс на один указатель больше, на один кэшмисс меньше
ок спасибо! надо бы мне осознать такой подход к решению этой задачи
источник

CD

Constantine Drozdov in pro.cxx
Anton Glukhov
ок спасибо! надо бы мне осознать такой подход к решению этой задачи
попробуйте подумать о том, что создание синглтона не связано с контейнером
источник

AG

Anton Glukhov in pro.cxx
Constantine Drozdov
попробуйте подумать о том, что создание синглтона не связано с контейнером
есть еще момент связанный со сложностью. если реализация переусложнена (для того уровня знания плюсов инженеров которым предстоит с этим работать) то могут возникнуть проблемы с отладкой, отлавливанием багов и т.д.
источник

CD

Constantine Drozdov in pro.cxx
Anton Glukhov
есть еще момент связанный со сложностью. если реализация переусложнена (для того уровня знания плюсов инженеров которым предстоит с этим работать) то могут возникнуть проблемы с отладкой, отлавливанием багов и т.д.
то, что я рассказываю, все-таки некоторый универсальный подход к программированию на С++
источник

AG

Anton Glukhov in pro.cxx
Constantine Drozdov
синглтон полиморфного CBase отдельно, там на примитивном уровне
namespace {
   std::unique_ptr<CBase> & container_storage_ref() {
          static std::unique_ptr<CBase> object;
          return object;
   }
}
void set_container(std::unique_ptr<CBase> container) {
    container_storage_ref() = std::move(container);
}
void exec_container() {
  container_storage_ref()->exec();
}
std::unique_ptr это полиморфное хранилище, это может быть и variant-like и пимплы с ограниченным размером и много чего еще
тут еще такой момент.. а если контейнер не синглтон? и что делать если контейнер должен хранить состояние?
источник
2020 October 29

LY

Leonid Yuriev in pro.cxx
Кто умеет делать быстрое review (поедать ~2-5KLOC в час), дайте pls feedback на https://github.com/erthink/libmdbx/blob/master/mdbx.h%2B%2B
источник

CD

Constantine Drozdov in pro.cxx
Я понимаю, что докапываюсь, но я бы не стал экспортировать определение byte в char8_t (и почему не signed char?), от этого имени я жду все-таки aliasable
источник

I

ITMcatcher in pro.cxx
Danya
@it_chats — чат по Pure C
Жаль правда что там админы любят банить просто так
🙏🏻
источник

IZ

Ilia Zviagin in pro.cxx
НАПОМИНАЕМ ВСЕМ!

Вопросы по изучению С/С++ и начального уровня, направлять в чат @supapro
источник