Open apolukhin opened 3 years ago
yndx-antoshkka, 30 мая 2018, 19:23 Идея мне нравится. Есть придирки:
Отдельно стоит расписать, почему свободные функции используются для кастомизации (а не какой-то шаблонный параметр). И добавить требование, что функции intrusive_ptr_release и intrusive_ptr_add_ref должны быть noexcept, иначе - ошибка компиляции.
languagelawyer, 1 июня 2018, 11:21
при UB noexcept не пишется
Откуда такое правило?
yndx-antoshkka, 1 июня 2018, 13:43 в некоторых компиляторах есть различные флаги, позволяющие в случае UB например кидать исключение. Если помечать функции с UB как noexcept, то вместо исключения будет вызван std::terminate.
languagelawyer, 1 июня 2018, 14:03 yndx-antoshkka, noexcept у std::shared_ptr::operator* - это дефект?
yndx-antoshkka, 1 июня 2018, 14:43 Обновлено 1 июня 2018, 14:03
languagelawyer, да. К несчастью не устранимый https://cplusplus.github.io/LWG/issue2337
Для консистентности думают сделать правки в другие части стандартной библиотеки https://cplusplus.github.io/LWG/issue2762 но пока что их не приняли. Так что лучше пока не добавлять noexcept по аналогии с большинством operator*()
neondev9, 31 мая 2018, 15:16 поддерживаю
Виктор Губин, 18 марта 2019, 18:52 Класс малость по-сложенее будет. Нехватает операторов сравнения, проверок на соместимость типов (p_enable_if_convertible) и xxx_pointer_cast функций.
Alexander Enaldiev, 18 марта 2020, 17:36 Да, добавить было бы неплохо.
К сожалению, предложена частная реализация (+ в камментах ссылка на yet another из boost), а не требования.
Перенос предложения: голоса +10, -0 Автор идеи: kotbegemot @kotbegemot
Устал от того что в стандартной библиотеки не какой альтернативе shared_ptr предлагаю добавить intrusive_ptr. https://github.com/kotbegemot/intrusive_ptr принимаю предложения и комментарии.