
Ilia
31.03.2018
13:45:08

Vitaliy
31.03.2018
13:48:05

Ilia
31.03.2018
14:14:10
PIMPL реализовать

Александр
31.03.2018
14:17:48

Google

Ilia
31.03.2018
14:20:48
Я не принимаю , это же очень просто и не автоматизируется средствами языка никак...
Что там можно в библиотеках искать?

Aidar
31.03.2018
14:22:54
он же сказал что хочет const пробросить
внутрь пимпла

Ilia
31.03.2018
15:58:25

Nikita
31.03.2018
16:18:51
И в чём проблема?
как ты решаешь проблему того, что внутри const метода указатель на реализацую должен быть указателем на константу?

Vitaliy
31.03.2018
16:51:28
Сейчас я это делаю как-то так https://github.com/vsbaldeev/cppimpl/blob/master/src/Pimpl.h
Но пока даже не знаю все ли проблемы я решаю )
А с propogate_const даже думать не надо
В бусте пока такой штуки нету
А если тащить текущий proposal, то он не применим к C++11

Antony
31.03.2018
16:57:55
Pimpl на стеке https://github.com/apolukhin/cpp-alls/blob/master/include/cppalls/core/detail/stack_pimpl.hpp#L41-L104
С копированием и move семантикой
Вдруг пригодиться :)
^ там lazy_size лучше заменить на Size, передаваемый явным шаблонным параметром. Будет покрасивее

Google

Vitaliy
31.03.2018
17:04:39
А для чего этот lazy_size вообще нужен ?

Antony
31.03.2018
17:13:05
Надо откуда-то получать размер класса, который будем хранить в 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
Но сразу скажу, что решение так себе. На разных платформах размер объектов будет разный, сплошное мучение переносить с одной платформы на другую

Anatoly
31.03.2018
17:15:31
А это все для того, чтобы не указатель хранить на impl, а сам impl в буфере фиксированного размера?

Antony
31.03.2018
17:16:11
ага, чтобы без динамической аллокации и индирекции

Anatoly
31.03.2018
17:16:52
интересный ход с lazy_size, но требует внимания

Antony
31.03.2018
17:20:47
там static_assert всё обложено и прострелить конечность сложно. Но результат мне не понравился :)

Anatoly
31.03.2018
17:27:41
ну, по идее вся борьба за константу class foo {enum {impl_size = xxx}; byte storage[impl_size];}
либо такой краткий вариант и static_assert, либо твоя идея с lazy_size
первый более лаконичный, конечно

Vitaliy
31.03.2018
18:28:43

Alex Фэils?︙
31.03.2018
18:58:26
#закладка
хорошо, что это сделали
поправил
репорты админам включаются в личке, если ввести команду /mysettings

Ilia
31.03.2018
19:46:03

Alex Фэils?︙
31.03.2018
19:47:47

Ignat
31.03.2018
21:00:34
чё пацаны 1 апреля

I
31.03.2018
21:00:39
@see date time

Google

Tema
31.03.2018
21:00:53
ууу сука

котек пират
31.03.2018
21:00:54

Kitsu
31.03.2018
21:00:54
еще 59 мин

Ignat
31.03.2018
21:00:56
собаки сутулые

Tema
31.03.2018
21:01:02
пчсы

I
31.03.2018
21:01:18
обнаружены временные пояса за мкадом??