
Роман
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

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

/dev
16.06.2017
16:03: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

/dev
16.06.2017
16:05:53

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

Google

Arseny
16.06.2017
16:06:14
А, понял

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
Как указатель имхо
Правда есть проблемы....

Aidar
16.06.2017
21:18:15

Valeriy
16.06.2017
21:18:30

Evgeniy
16.06.2017
21:18:41

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
низя

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

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, то не вижу проблемы

Aidar
16.06.2017
21:33:51
То же самое

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
Нет

Evgeniy
16.06.2017
21:35:34

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