kitsu
это не шаблоны раскрывать
Ivan
То есть в рантайме есть Конст??
Ivan
А не - реинтерпрет это компайл тайм?
kitsu
да
Ivan
Что да
🦥Alex Fails
А не - реинтерпрет это компайл тайм?
Глянь на годболте, как оно выглядит
Ivan
Я не знаю язык ассемблера
🦥Alex Fails
Если вкратце, то мы тупо на уровне асма начинаем работвть с тем куском памяти, как с объектом другого типа
Ivan
Это ок, но причем тогда const?
🦥Alex Fails
Конст - это другое. Просто си-стайл-каст объединяет все эти явные касты(реинтерпрет, конст, статик) в себе. И использует, исходя из контекста
Ivan
reinterpret_cast, короче тоже преобразование этапа компиляции. ?
Ivan
мне чуваки говорили, что в рантайме C-style каст быстрее работает, это же не так?
Ivan
это же бред)?
Igor
ситуация требует вмешательства. версия буста в любом случае должна быть зафиксирована и переход на новую должен проходить согласованно. вообщем, кто отвечает за этот бардак должен быть наказан.
есть какие-нибудь страшилки из тырпрайзного продакшна, которыми можно было бы попробовать запугать самого-главного-тимлида? текущий бардак бардаком не считается (уже смешно); прошлая попытка протолкнуть в массы пакетник вроде конана провалилась ибо "работает=>не трожь"
Ivan
C-style cast тоже преобразование этапa компиляции?
Danil
мне чуваки говорили, что в рантайме C-style каст быстрее работает, это же не так?
Он раскрывается либо в статик какст с расширением, либо в реинтерпрет.
Ivan
Он раскрывается либо в статик какст с расширением, либо в реинтерпрет.
ну, получается это преобразование этапа компиляции
Igor
Можно толкнуть телегу о нестабильном апи на разных платформах и сделать логический вывод, что на нестабильном апи стабильный продукт не сделать..
нестабильном апи кого? на каждодневной основе-то всё вполне работает, но раз в два-три месяца очередная ночная сборка падает из-за каких-то таких чудес я бы дописал "ВНЕЗАПНО падает", но эффект внезапности замыливается еженедельными фейлами "на винде написали что-то на c++14, что линукс с с++11 не смог переварить"
🦥Alex Fails
А еще тут может помочь годная книжка
🦥Alex Fails
#book #refactoring #legacy
Anonymous
Привет 🐶
Andrei
#book #refactoring #legacy
а чего канал не доступен?
🦥Alex Fails
Привет)
🦥Alex Fails
🦥Alex Fails
https://t.me/joinchat/AAAAAE1yUq2Kh6WdPCtjMA
Igor
#book #refactoring #legacy
пдфки в оригинале не завалялось? не ценю переводы, но пока только .epub нашёл
🦥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-хернях, чтоб узнавать размер неполного типа (#наркомания)
Igor
//а Невера и Виталия в список для кастования просто забыли включить, или они не ответственные за плюсочат?
Berkus
Я не знаю язык ассемблера
вот и повод выучить
Ivan
они перебираются во время компиляции, поэтому поху
я тоже так думал, меня легко ввести в заблуждение авторитетом.
Ivan
но ваш авторитет авторитетнее их авторитета
Berkus
ну если разобраться что такое каст то в общем станет ясно что он в рантайме редко делается (когда между виртуальными базами кастуешь - тогда может добавиться рантайм оверхед в пару инструкций)
Berkus
вот вот, это тоже каст
Ivan
ты имел ввиду просто, что людьми редко делается dynamic_cast?
Anatoly
и даже если можно обойтись без строк - то надо пройтись по списку всех связанных типов. Это тысячи инструкций
Andrei
А кого тут просить разрешить отправлять картинки?
Andrei
Done
Спасибо. Хотел отправить кое-что, но все-таки слишком оффтоп
pavel
Всё просто: надо быть просто дебилоидом как я!
🦥Alex Fails
Всё просто: надо быть просто дебилоидом как я!
Не, как я) А если серьезно, то в бинарнике эта переменная валяется в секции
pavel
Да нашёл я уже ответ, чё-то вы тормозите.
pavel
Росслабтесъ уже.
pavel
Это я всё понимаю. Интересно что происходит на уровне компилятора, ELF бинаря и т.п. - вот это всё.
🦥Alex Fails
Надо взять IDA Pro, и поглядеть)
pavel
Я понял что есть записываемый неинициализированный кусок памяти фиксированного размера - поставляется в ELF в таком вот виде.
pavel
Ну вот просто интересно физически этот "сегмент данных" - это чо такое. Как он относится к "куче" и "стеку". Ответ - никак.
pavel
https://ru.wikipedia.org/wiki/Executable_and_Linkable_Format
Да я уже понял. Куча всяких сегментов с разными атрибутами.
pavel
Интересно просто в академической С++-науке как этот сегмент называется. Всмысле, в терминах языкового стандарта. Подозреваю что никак...
Anatoly
нету никаких "сегментов" в С++, есть storage duration и оно про время, а не про место
🦥Alex Fails
Почувствовать, как говорится, наживую
Igor
asio, regex, chrono, thread, и куча всякой мелочи вроде optional, assert и так далее посыл понял, благодарю
Timofey
Почему может процессор быть не загружен на 100%, если я запускаю много потоков, и они гарантированно все работают?
Timofey
Приложение есть от силы 25% cpu, если судить по диспетчеру задач