Anatoly
Vitaliy
Vitaliy
И вот сюда ещё можешь посмотреть http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4388.html
Vitaliy
Что именно руками ?)
Александр
Человек хочет сам себя обезопасить при написании pImpl
Aidar
он же сказал что хочет const пробросить
Aidar
внутрь пимпла
Nikita
как ты решаешь проблему того, что внутри const метода указатель на реализацую должен быть указателем на константу?
Vitaliy
Сейчас я это делаю как-то так https://github.com/vsbaldeev/cppimpl/blob/master/src/Pimpl.h
Vitaliy
Но пока даже не знаю все ли проблемы я решаю )
Vitaliy
А с propogate_const даже думать не надо
Vitaliy
В бусте пока такой штуки нету
Vitaliy
А если тащить текущий proposal, то он не применим к C++11
🐙 Antony
Pimpl на стеке https://github.com/apolukhin/cpp-alls/blob/master/include/cppalls/core/detail/stack_pimpl.hpp#L41-L104
С копированием и move семантикой
Вдруг пригодиться :)
🐙 Antony
^ там lazy_size лучше заменить на Size, передаваемый явным шаблонным параметром. Будет покрасивее
Vitaliy
А для чего этот lazy_size вообще нужен ?
🐙 Antony
Надо откуда-то получать размер класса, который будем хранить в pimpl. Так как класс только forward declared, то его размер получить нельзя. Поэтому ручками явно специализируется lazy_size для конкретного класса, прежде чем совать его в pimpl (например вот так, для asio https://github.com/apolukhin/cpp-alls/blob/48fe70952c5b4b491e8d3769ae14cc74c3e5ef9a/include/cppalls/core/detail/boost_asio_fwd.hpp )
после этого, можно везде использовать, не указывая размер: https://github.com/apolukhin/cpp-alls/blob/48fe70952c5b4b491e8d3769ae14cc74c3e5ef9a/include/cppalls/core/detail/sync_connection.hpp#L15
🐙 Antony
Но сразу скажу, что решение так себе. На разных платформах размер объектов будет разный, сплошное мучение переносить с одной платформы на другую
Anatoly
А это все для того, чтобы не указатель хранить на impl, а сам impl в буфере фиксированного размера?
🐙 Antony
ага, чтобы без динамической аллокации и индирекции
Anatoly
интересный ход с lazy_size, но требует внимания
🐙 Antony
там static_assert всё обложено и прострелить конечность сложно. Но результат мне не понравился :)
Anatoly
ну, по идее вся борьба за константу class foo {enum {impl_size = xxx}; byte storage[impl_size];}
Anatoly
либо такой краткий вариант и static_assert, либо твоя идея с lazy_size
Anatoly
первый более лаконичный, конечно
Vitaliy
ага, чтобы без динамической аллокации и индирекции
Я так понимаю этот случай интересен с точки зрения производительности. Думаю, что можно миксовать и динамический и статический варианты в зависимости от ожидаемого количества вызовов конструктора.
🦥Alex Fails
🦥Alex Fails
🦥Alex Fails
🦥Alex Fails
репорты админам включаются в личке, если ввести команду /mysettings
🦥Alex Fails
Ignat
чё пацаны 1 апреля
Ivan
@see date time
Deleted Account
ууу сука
Anonymous
kitsu
еще 59 мин
Ignat
собаки сутулые
Deleted Account
пчсы
Ivan
обнаружены временные пояса за мкадом??
Anonymous
Мне зашло
Deleted Account
Deleted Account
мкадской
Denis
а дескрипшен
Ivan
нет я как раз в безвременье
firther
Лол, паскаль
Biohackerg
Паскаль) первый яп)
Jack
что тут происходит?
Anatoly
День дурака
ep
Как я сюда попал вообще?
ep
:))
Jack
ахаха
Nikita
отписоуюсь
IharOK
не пугайте так, начал вспоминать аж когда это я на него подписывался 😂
Deleted Account
бля
Две Точки
wat
Deleted Account
я думал это сипипи тугезер
firther
Denis
https://dobrador.com/wp-content/uploads/2014/04/anarchy-united-kingdom.jpg
Dave
прочитал название чата и очень удивился
Nikita
PrintLn("The best chat ever!!!");
Dave
WriteLn*
Deleted Account
Dave
почему
Ну очевидно что это первоапрельская шутка
Deleted Account
пользуясь случаем хочу написать
begin
end
Dave
из чата про дельфи делать чат про паскаль
Anatoly
Да, пока есть эта возможность
Gregory
млиииииин
Nikita
Пацаны, какие новости комитета по станддартизации? Классы добавят?
Gregory
первая мысль: что я делаю в этом чате )))
Alejandro Jeditobe
Как я сюда попал?
Ivan
🦥Alex Fails
Gregory
Anonymous
Асм есть царь.