RAII + deleter + move + get + operator bool из коробки - писать меньше))
Вообще, у себя мы используем
обёртки над апи, которые возвращают auto, а на деле - unique_ptr<remove_pointer_t<handle_type>, some_lambda
>
Уникальность типа лямбды решает проблему конструирования с не тем удалителем (правда, reset её может вновь вернуть), но некоторая привязка к внутренней реализации дескриптора присутствует, согласен
Я уже переписал под any, создание и удаление 1m сущностей за 0.038 сек, никаких ООП, но поддерживает автоматическое определение наличия в классе методов OnCreate, OnUpdate, OnDestroy