sizeof(LazyIntedStream) равно 144 байт (MSVC2019-x86). Это много для "пустого" функционала на стеке. Возможно raw-pointer будет лучшим решением, чем std::optional. В обычной жизни std::ostream возникает только для сторонних библиотек.
Если в дебаге и релизе размер нативного типа различается, то двумя константами для FastPimpl не обойтись. Придётся #ifdef-ы использовать. Но это не в укор имплементации. По другому пока не сделать.
Можно взять максимальные размер и выравнивание. Ну и немного подправить validate(). Если оверхед приемлемый, это лучше чем тонны ifdef. Второй вариант - использовать cmake с генерацией кода на конфигурации, плюс try_compile для вычисления реального размера. Минусы - когда пройдут годы и носители знания уйдут, новичкам будет что подумать вслух :)
Ну и в целом код получается под конкретную платформу и конкретные версии библиотек. Всё таки тут без дополнительных утилит не обойтись (например, на базе проекта clang, да и то это заработает только в том случае, если собирать результат будем тем же clang'ом, с теми же наборами флагов, окружения и т.д.).
Прикольно получилось, даже опытный программист начал зависить от картинки на экране 😂😂😂😂
Спасибо за доклад
Да ребята, легких путей вы не ищите.
22-00😂😂😂😂
sizeof(LazyIntedStream) равно 144 байт (MSVC2019-x86). Это много для "пустого" функционала на стеке. Возможно raw-pointer будет лучшим решением, чем std::optional.
В обычной жизни std::ostream возникает только для сторонних библиотек.
Если в дебаге и релизе размер нативного типа различается, то двумя константами для FastPimpl не обойтись. Придётся #ifdef-ы использовать. Но это не в укор имплементации. По другому пока не сделать.
Можно взять максимальные размер и выравнивание. Ну и немного подправить validate().
Если оверхед приемлемый, это лучше чем тонны ifdef.
Второй вариант - использовать cmake с генерацией кода на конфигурации, плюс try_compile для вычисления реального размера.
Минусы - когда пройдут годы и носители знания уйдут, новичкам будет что подумать вслух :)
Ну и в целом код получается под конкретную платформу и конкретные версии библиотек. Всё таки тут без дополнительных утилит не обойтись (например, на базе проекта clang, да и то это заработает только в том случае, если собирать результат будем тем же clang'ом, с теми же наборами флагов, окружения и т.д.).
... size = ct::conditional_v;
а в проекте в любом случае где-то уже определяется отладочный режим
Интересно, а Полухин в России или уже уехал?
Уже ? А должен был уехать ? И где та райская земля, куда стремятся плюсовики ?
яндекс то уехал
неестественные взмахи руками
За плюсы так шарят только боги, поэтому для людей такие движения кажутся неестественными