Существует ли стандартный класс указателя (или Boost), который является не общим указателем, который работает с неполными типами? Я ознакомился со стандартом C ++ 11 и библиотекой boost и не могу его найти, хотя он выглядит очень полезным типом.
Например, я хотел бы иметь возможность создавать непрозрачные типы, используя умный указатель.
class A;
wrap_ptr<A> some_func();
void other_func( A const & );
A
- непрозрачный тип, который может использоваться для различных функций. Пользователь вышеупомянутого интерфейса имеет только неполное определение A, но должен иметь возможность удалить / сбросить указатель. Я знаю, что вышеупомянутое может быть сделано с shared_ptr
, но у него есть издержки, которые я не хочу в этом конкретном коде. unique_ptr
имеет правильную семантику владения, но не может работать с неполным типом. Теоретически оболочка должна иметь только накладные расходы на наличие указателя на удалитель.
Есть ли такой тип в C ++ 11 или в библиотеках boost?
ПРИМЕЧАНИЕ. Я понимаю, что могу легко создать этот тип, но я бы предпочел стандартный тип, если это возможно. Кажется, это должен быть базовый тип интеллектуального указателя.
ОБНОВЛЕНИЕ : unique_ptr
не является хорошим вариантом. Сначала синтаксические издержки будут смещены. Во-вторых, я не уверен, что его можно безопасно использовать с пользовательским средством удаления. Я проверю, как это может работать.