Denis
А с объявлениями двух и более переменных на одной строке — когда ты вносишь изменения в имя переменной, её инициализатор или тип — у тебя в системе контроля версий будет вся строчка подсвечена как модифицированная.
Denis
Ну, да, согласен, что вкусовщина. Просто вкус бывает хороший и плохой. Хороший создаёт меньше проблем такого рода как я выше описал.
Ender
Лол
Denis
>переход на личности
Denis
Люблю здоровые дискуссии.
Denis
Дальше по накатанной, да? У тебя из-за стиля тоже могут быть практические проблемы, а если ты этого не знаешь, то у меня для тебя плохие новости.
Vladislav
Berkus
Крылатый
Главное, не страдать хернёй типа int* foo, bar;
Ender
Крылатый
Крылатый
Поэтому лучше shared_ptr<int> foo, bar; ;P
Ender
:D
Denis
::enable_shared_from_this до сих пор актуально?
Ildar
А точно ли тебе там нужен шаред? Мб unique_ptr хватило бы
Крылатый
Крылатый
Но всё от задач.
Ildar
Это да
Ender
Всем auto_ptr
Berkus
Denis
Да а что
Когда наткнулся на это в когда-то давно было очень неудобно — надо было отдавать shared_ptr из this в теле наследников, а shared_ptr был от базового типа.
Denis
Точно не помню, но как-то это всё было неудобно. Думал может что лучше завезли.
Ender
C++11 работает. Возможно уже есть тонны легаси-говнокода с этим.
Ender
А давно - это в прошлом году.
Ildar
давно сказали не использовать его
Ildar
Он с C++11 в deprecated
Oleg
Denis
Что? Если "переход на личности" в дискуссии — это больная мозоль, то да.
Denis
А предметно — нет.
Anatoly
Ender
А ничего.
Matwey
Хочу более прямой unique_ptr
Matwey
Сейчас не очень удобно использовать указатель на функцию в качестве Deleter-а
Matwey
Который и так уже является частью типа
Matwey
Можно было бы туда просто запихать указатель на функицю (а он может быть аргументом шаблона) и избежать использования еще одного указателя под Deleter и необходимости безумной инициализации каждый раз одним и тем же значением
Matwey
Может конечно я им как-то не так пользуюсь
Matwey
Хотя, я понял
Matwey
Нужно сделать обертку дополнительную
Matwey
Вокруг указателя
Matwey
В каком классе?
Matwey
Нет, спасибо, с ним всё ок
Matwey
Я имею ввиду, что в любой C-щной библиотеке или SDK будет один и тот же паттерн:
myhandle* new_resource();
free_resource(myhandle*)
Вот этот myhandle очень удобно оборачивать в unique_ptr и там хранить. Потому-что класс, который его инкапсулирует, сразу становится некопируемым автоматически, ресурс всегда освободится при стандартном деструкторе. Итого: для правильного поведения не нужно помнить как минимум две вещи.
Anatoly
Anatoly
//
// вспомогательный тип для скопгарда обеспечивающего управление HINTERNET хендлерами
//
typedef std::unique_ptr<typename std::remove_pointer<HINTERNET>::type, void(*)(HINTERNET)> InternetHandlerHolder;
по типу?
Matwey
Так я и говорю о том, как я делаю wrapper-класс.
Вместо
unique_ptr<myhandle, decltype(&free_resource) x{new_resource(..), &free_resouce}
хочу чтобы было так
unique_ptr<myhandle, my_deleter<&free_resource> > x(new_resource(..));
Matwey
Только my_deleter нужно занести в STL, чтобы каждый раз его не переизобретать
Matwey
где my_deleter тривиально реализуется - ничего не хранит, а в функции operator()(T*) зовет шаблонный аргумент указателя на функцию.
Matwey
Может. Но зачем? Чтобы я забыл его написать однажды?
Matwey
В отличии от чего?
Berkus
Matwey
unique_ptr то как раз автоматом всё почистит
Berkus
Охуенная штука во враппер классе
Berkus
Berkus
Которые решаются враппер классом легко
Berkus
И там еще ништяков добавляется
Vladislav
Vladislav
нужно по одному враппер-классу на тип ресурса
Vladislav
иначе можно в один прекрасный день забыть прописать deleter
Matwey
Руками надо соорудить весь мой класс который будет хранить голый myhandler* очевидно. А так же не забыть потереть ему операторы копирования и написать ему десткруктор.
Matwey
Я не хочу руками их определять
Matwey
Именно
Matwey
Я стремлюсь к тому, чтобы компиляторы за меня программировали
Matwey
Мне это дело уже давно надоело и не приносит удовольствия
Matwey
Anatoly
плюсану, поскольку работая с WINAPI всегда городишь что-то вроде приведеленного выше
Anatoly
раньше холдеры писали, теперь можно обойтись unique_ptr
DZ
ребят дайте пожалуйста пример opensource проекта dll/so с cmake и чтоб в этом репозитории также лежали примеры использования тоже с cmake завязанные и тестами.. очень надо )
DZ
чтоб по возможности был конвертируем в VS проект )
Matwey
Vladislav
Anatoly
Anatoly
а вот пример включения gtest