kitsu
🦥Alex Fails
kitsu
это не шаблоны раскрывать
Ivan
То есть в рантайме есть Конст??
Ivan
А не - реинтерпрет это компайл тайм?
kitsu
да
Ivan
Что да
Ivan
Я не знаю язык ассемблера
🦥Alex Fails
Если вкратце, то мы тупо на уровне асма начинаем работвть с тем куском памяти, как с объектом другого типа
Ivan
Это ок, но причем тогда const?
🦥Alex Fails
Конст - это другое. Просто си-стайл-каст объединяет все эти явные касты(реинтерпрет, конст, статик) в себе. И использует, исходя из контекста
Ivan
reinterpret_cast, короче тоже преобразование этапа компиляции. ?
🐙 Antony
Ivan
мне чуваки говорили, что в рантайме C-style каст быстрее работает, это же не так?
Ivan
это же бред)?
Ivan
C-style cast тоже преобразование этапa компиляции?
Danil
Ivan
Anatoly
🦥Alex Fails
Andrei
🦥Alex Fails
🦥Alex Fails
А еще тут может помочь годная книжка
🦥Alex Fails
#book #refactoring #legacy
Anonymous
Привет 🐶
🦥Alex Fails
Привет)
🦥Alex Fails
🦥Alex Fails
https://t.me/joinchat/AAAAAE1yUq2Kh6WdPCtjMA
Andrei
🦥Alex Fails
мб было где, я погляжу
Andrei
Может кто-то делал на шаблонах chain of responsibility + factory и может поделиться своей идеей (кодом)?
🦥Alex Fails
🦥Alex Fails
такое дно:
🦥Alex Fails
class TimerFactory
{
public:
template <typename T>
static std::unique_ptr<Timer> create()
{
return std::make_unique<T>();
}
};
🦥Alex Fails
ща там сделал так, чтоб она нормально работала с неполными типами
🦥Alex Fails
если еще аргументы нужны, то можно сделат еще typename... Args
🦥Alex Fails
вот физическая организация заголовков
🦥Alex Fails
тут получается такая жесть:
Timer_fwd.h - все incomplete types таймеров;
Timer.h - сам абстрактный класс
TimerFactoryInterface.h - класс фабрики таймеров;
TimerFactory.h - солянка из всех файлов + экстерн инстанциации для тех упоротых шаблонных методов фабрики
🦥Alex Fails
думал еще сделать TimerFactory_instantiations.h, хз, делать ли отдельно
🦥Alex Fails
собственно, был еще вариант с placement new, который не аллоцировал память. также я думал об упоротых constexpr-хернях, чтоб узнавать размер неполного типа (#наркомания)
Berkus
Igor
//а Невера и Виталия в список для кастования просто забыли включить, или они не ответственные за плюсочат?
Berkus
Berkus
Berkus
Ivan
но ваш авторитет авторитетнее их авторитета
Berkus
ну если разобраться что такое каст то в общем станет ясно что он в рантайме редко делается (когда между виртуальными базами кастуешь - тогда может добавиться рантайм оверхед в пару инструкций)
Ivan
Berkus
вот вот, это тоже каст
Ivan
ты имел ввиду просто, что людьми редко делается dynamic_cast?
Anatoly
Anatoly
и даже если можно обойтись без строк - то надо пройтись по списку всех связанных типов. Это тысячи инструкций
Andrei
А кого тут просить разрешить отправлять картинки?
🦥Alex Fails
Andrei
Done
Спасибо.
Хотел отправить кое-что, но все-таки слишком оффтоп
🦥Alex Fails
pavel
Всё просто: надо быть просто дебилоидом как я!
Anatoly
pavel
Да нашёл я уже ответ, чё-то вы тормозите.
pavel
Росслабтесъ уже.
pavel
Это я всё понимаю. Интересно что происходит на уровне компилятора, ELF бинаря и т.п. - вот это всё.
🦥Alex Fails
Надо взять IDA Pro, и поглядеть)
Anatoly
pavel
Я понял что есть записываемый неинициализированный кусок памяти фиксированного размера - поставляется в ELF в таком вот виде.
pavel
Ну вот просто интересно физически этот "сегмент данных" - это чо такое. Как он относится к "куче" и "стеку". Ответ - никак.
Anatoly
pavel
Интересно просто в академической С++-науке как этот сегмент называется. Всмысле, в терминах языкового стандарта. Подозреваю что никак...
Anatoly
нету никаких "сегментов" в С++, есть storage duration и оно про время, а не про место
🦥Alex Fails
Почувствовать, как говорится, наживую
Igor
asio, regex, chrono, thread, и куча всякой мелочи вроде optional, assert и так далее
посыл понял, благодарю
Timofey
Почему может процессор быть не загружен на 100%, если я запускаю много потоков, и они гарантированно все работают?
Timofey
Приложение есть от силы 25% cpu, если судить по диспетчеру задач