@ProCxx

Страница 1912 из 2477
Vitaliy
31.03.2018
13:48:05
Я не понял, а руками, нет?
Что именно руками ?)

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

Александр
31.03.2018
14:17:48
PIMPL реализовать
Человек хочет сам себя обезопасить при написании pImpl

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

Alex Фэils?︙
31.03.2018
19:47:47
^ там lazy_size лучше заменить на Size, передаваемый явным шаблонным параметром. Будет покрасивее
блин, на днях хотел подобное написать, забил, сделал набор шаблонных фабрик, которые работают на экстернах специализаций шаблона этой фабрики

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
обнаружены временные пояса за мкадом??

Страница 1912 из 2477