ttldtor
суть правильных языков
Dr. Friedrich
Друзья, преимущества хаскеля вы можете обсудить в хаскелечате.
Constantine
тогда можно доказательство, что код на хаскелле занимает в объеме в 100 раз меньше, чем аналогичный на плюсах
Constantine
и тогда 1М кода на хаскеле
Dr. Friedrich
Там строго
Так и тут строго!
Dr. Friedrich
и давно у тебя здесь мигалка?
Сколько себя помню.
Roman
Roman
Из Хаскельчата
Constantine
в любом случае, здесь действительно чат по плюсам, и я не понимаю, в чем сложность модификации аналога сv-qualifier для типа уже объявленной переменной (с точки зрения компилятора)
Constantine
особенно если добавить условие, что на выходе из блока сбрасываются все не общие
ttldtor
Видимо, я не понял всей глубины проблемы, чтобы дать хоть какой-то вариант идиоматичного воркэраунда.
Nikita
Так и тут строго!
@AlexFails, срочно нужен @pro.cxx.overdominates.haskell
Constantine
Видимо, я не понял всей глубины проблемы, чтобы дать хоть какой-то вариант идиоматичного воркэраунда.
Его не существует. Я не могу модифицировать вызываемый деструктор или факт его вызова.
Constantine
в C++ принципиально не существует кода, который для объявленной в блоке переменной типа std::unique_ptr<SomeType> не инстанцирует вызов deleter в конце этого блока
Constantine
в частности, поэтому я не могу написать следующую функцию std::unique_ptr<IncompleteType> JustReturn(std::unique_ptr<IncompleteType> input){ return std::move(input); }
Constantine
И не может
Constantine
Он обязан вызвать деструктор
Arseny
Он обязан вызвать деструктор unique_ptr, который может заинлайниться, как пустой
Nikita
Вызвать-то может, но он может значение проследить и ветку в деструкторе отрубить
Constantine
Он обязан вызвать деструктор unique_ptr, который может заинлайниться, как пустой
Компилятор не может не инстанцировать вызов деструктора, при компиляции деструктора не может не инстанцировать вызов deleteter
Nikita
Вызвать-то может, но он может значение проследить и ветку в деструкторе отрубить
Насколько отрубить, что ничего по факту не останется. Но гарантировать это нельзя
Constantine
Это значит, что будет по умолчанию инстанцирован delete для IncompleteType*
Arseny
А, понял
Constantine
Это доказательство того, что требуемая логика не может быть реализована без модификации компилятора
Aidar
Не хочешь вызов деструктора зачем тебе умный указатель
Aidar
Не понимаю смысла user defined qualifiers
Aidar
У нас же есть шаблонные параметры
MrSmith
Вроде гдет в последних стандартах видел delete defaulte и тд
MrSmith
Для конструкторов класса вроде тоже можно
Aidar
Это си++11
MrSmith
А у нас снвоа некромантия?
Aidar
Нет тут ваще дикая упоротостт
Aidar
Чтобы понять нужно читать сначала
MrSmith
Че он хочет по человечески кто понял раскидайте
Aidar
Он хочет инкомплит тип сунуть в юник поинтер
Aidar
Чтобы деструктор не вызывался
MrSmith
А зачем он это хочет?
MrSmith
Похоже на какой-то грязный хако-велосипед
Dmitry
Он хочет инкомплит тип сунуть в юник поинтер
что подразумевается под инкомплитом?
Aidar
Форвард декларейшн
Dmitry
как можно инкомплит передать в шабон в принципе...
MrSmith
Как указатель имхо
MrSmith
Правда есть проблемы....
Varg
Похоже на какой-то грязный хако-велосипед
на таких хаках плюсы и держатся)
Varg
я не говорю, что конкретно этот случай нормальный, я про общий подход
Dmitry
пока подобные хаки возможны, не нужно внедрять альтернативы)
Varg
мне это не надо
Varg
лично у меня и так все хорошо :)
Dmitry
Как указатель имхо
https://wandbox.org/permlink/P2i1lzUIPlOPjiaw
Dmitry
низя
Varg
можно
Dmitry
как
Varg
у тебя там ошибка синтаксиса
Varg
ты не указал переменную
Varg
название
Anatoly
как
template<typename T> struct foo { T* p; }; class incomplete; int main() { foo<incomplete> f; }
Varg
Value<Incomplete*> pp;
Varg
должно быть так
Varg
а у тебя было Value<Incomplete*>;
Anatoly
как можно инкомплит передать в шабон в принципе...
так-то это на каждом шагу, например, pimpl: // foo.h class fooimpl; class foo { .... std::unique_ptr<fooimpl> pimpl; }; // foo.cpp class fooimpl {} ...
Dmitry
вон чо
Constantine
Я хочу не просто чтобы удаление не вызвалось, я хочу перегрузки по user defined qualifiers
Dmitry
если можно задетектить инкомплит по sfinae, то не вижу проблемы
Aidar
То же самое
Constantine
Нельзя это реализовать шаблонами, я же запруфал
Aidar
Чем запруфал
Constantine
Нужно обязательно иметь возможность изменять квалификатор типа после объявления переменной
Aidar
А ты можешь так сделать с обычными св?
Constantine
Нет