@ProCxx

Страница 970 из 2477
Роман
16.06.2017
15:51:04
Из Хаскельчата

Constantine
16.06.2017
15:51:25
в любом случае, здесь действительно чат по плюсам, и я не понимаю, в чем сложность модификации аналога сv-qualifier для типа уже объявленной переменной (с точки зрения компилятора)

особенно если добавить условие, что на выходе из блока сбрасываются все не общие

Anatoly
16.06.2017
15:57:00
Видимо, я не понял всей глубины проблемы, чтобы дать хоть какой-то вариант идиоматичного воркэраунда.

Google
/dev
16.06.2017
15:57:20
Так и тут строго!
@AlexFails, срочно нужен @pro.cxx.overdominates.haskell

Constantine
16.06.2017
15:57:42
Видимо, я не понял всей глубины проблемы, чтобы дать хоть какой-то вариант идиоматичного воркэраунда.
Его не существует. Я не могу модифицировать вызываемый деструктор или факт его вызова.

в C++ принципиально не существует кода, который для объявленной в блоке переменной типа std::unique_ptr<SomeType> не инстанцирует вызов deleter в конце этого блока

в частности, поэтому я не могу написать следующую функцию std::unique_ptr<IncompleteType> JustReturn(std::unique_ptr<IncompleteType> input){ return std::move(input); }

Arseny
16.06.2017
16:02:14
Constantine
16.06.2017
16:03:27
И не может

Он обязан вызвать деструктор

Arseny
16.06.2017
16:04:22
Он обязан вызвать деструктор unique_ptr, который может заинлайниться, как пустой

/dev
16.06.2017
16:04:36
Вызвать-то может, но он может значение проследить и ветку в деструкторе отрубить

Constantine
16.06.2017
16:05:11
Он обязан вызвать деструктор unique_ptr, который может заинлайниться, как пустой
Компилятор не может не инстанцировать вызов деструктора, при компиляции деструктора не может не инстанцировать вызов deleteter

/dev
16.06.2017
16:05:53
Вызвать-то может, но он может значение проследить и ветку в деструкторе отрубить
Насколько отрубить, что ничего по факту не останется. Но гарантировать это нельзя

Constantine
16.06.2017
16:06:02
Это значит, что будет по умолчанию инстанцирован delete для IncompleteType*

Google
Constantine
16.06.2017
16:06:40
Это доказательство того, что требуемая логика не может быть реализована без модификации компилятора

Group Butler [beta]
16.06.2017
18:10:58
Чат supapro.cxx: https://telegram.me/joinchat/BYlFbD3eN3JMaG34hyh96w

Aidar
16.06.2017
21:03:31
Не хочешь вызов деструктора зачем тебе умный указатель

Не понимаю смысла user defined qualifiers

У нас же есть шаблонные параметры

MrSmeet
16.06.2017
21:09:08
Вроде гдет в последних стандартах видел delete defaulte и тд

Для конструкторов класса вроде тоже можно

Aidar
16.06.2017
21:09:50
Это си++11

MrSmeet
16.06.2017
21:10:06
А у нас снвоа некромантия?

Aidar
16.06.2017
21:10:22
Нет тут ваще дикая упоротостт

Чтобы понять нужно читать сначала

MrSmeet
16.06.2017
21:10:53
Че он хочет по человечески кто понял раскидайте

Aidar
16.06.2017
21:11:30
Он хочет инкомплит тип сунуть в юник поинтер

Чтобы деструктор не вызывался

MrSmeet
16.06.2017
21:12:13
А зачем он это хочет?

Похоже на какой-то грязный хако-велосипед

reagentoo
16.06.2017
21:14:39
Он хочет инкомплит тип сунуть в юник поинтер
что подразумевается под инкомплитом?

Google
Aidar
16.06.2017
21:14:54
Форвард декларейшн

reagentoo
16.06.2017
21:15:57
как можно инкомплит передать в шабон в принципе...

MrSmeet
16.06.2017
21:16:30
Как указатель имхо

Правда есть проблемы....

Valeriy
16.06.2017
21:18:30
Похоже на какой-то грязный хако-велосипед
на таких хаках плюсы и держатся)

Valeriy
16.06.2017
21:19:36
я не говорю, что конкретно этот случай нормальный, я про общий подход

reagentoo
16.06.2017
21:20:34
пока подобные хаки возможны, не нужно внедрять альтернативы)

MrSmeet
16.06.2017
21:20:40
Valeriy
16.06.2017
21:21:03
мне это не надо

лично у меня и так все хорошо :)

reagentoo
16.06.2017
21:21:54
Как указатель имхо
https://wandbox.org/permlink/P2i1lzUIPlOPjiaw

низя

Valeriy
16.06.2017
21:23:01
можно

reagentoo
16.06.2017
21:23:07
как

Valeriy
16.06.2017
21:23:08
у тебя там ошибка синтаксиса

ты не указал переменную

название

Anatoly
16.06.2017
21:23:21
как
template<typename T> struct foo { T* p; }; class incomplete; int main() { foo<incomplete> f; }

Google
Valeriy
16.06.2017
21:23:43
Value<Incomplete*> pp;

должно быть так

Admin
ERROR: S client not available

Valeriy
16.06.2017
21:23:53
а у тебя было Value<Incomplete*>;

reagentoo
16.06.2017
21:25:29
Anatoly
16.06.2017
21:30:54
как можно инкомплит передать в шабон в принципе...
так-то это на каждом шагу, например, pimpl: // foo.h class fooimpl; class foo { .... std::unique_ptr<fooimpl> pimpl; }; // foo.cpp class fooimpl {} ...

reagentoo
16.06.2017
21:32:22
вон чо

Constantine
16.06.2017
21:33:13
Я хочу не просто чтобы удаление не вызвалось, я хочу перегрузки по user defined qualifiers

reagentoo
16.06.2017
21:33:39
если можно задетектить инкомплит по sfinae, то не вижу проблемы

Constantine
16.06.2017
21:34:12
Нельзя это реализовать шаблонами, я же запруфал

Aidar
16.06.2017
21:34:36
Чем запруфал

Constantine
16.06.2017
21:35:04
Нужно обязательно иметь возможность изменять квалификатор типа после объявления переменной

Aidar
16.06.2017
21:35:24
А ты можешь так сделать с обычными св?

Constantine
16.06.2017
21:35:32
Нет

Aidar
16.06.2017
21:35:36
Ну и?

Constantine
16.06.2017
21:35:53
Но компилятору это бесплатно

Aidar
16.06.2017
21:36:09
Сделай неявные кастования и мувай

Google
Aidar
16.06.2017
21:36:13
Профит

Constantine
16.06.2017
21:36:19
Нельзя

Aidar
16.06.2017
21:36:29
Что нельзя

Constantine
16.06.2017
21:36:30
Я получаю в функцию юник птр

Aidar
16.06.2017
21:36:52
Юник поинтер для этого не предназначен

Constantine
16.06.2017
21:36:55
Как мне теперь сделать, чтобы эта функция скомпилировалась, если он инкомплит тайп

Хорошо

Aidar
16.06.2017
21:37:20
Какой там тип то?

Constantine
16.06.2017
21:37:28
Что какой тип

Инкомплит любой шаблонный параметр юник птра

Aidar
16.06.2017
21:37:45
Ведь unique ptr abacaba=nullptr

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