scoped_ptr
не разрешает пользовательское удаление. Основная причина, которую я могу предположить, заключается в том, что ее размер не будет равен sizeof(T*)
, если он будет сохранять boost::function<>
, как shared_ptr
.
Я думаю, что наиболее переносимые варианты - использовать shared_ptr
или написать свой собственный scoped_ptr
, который будет поддерживать удалители.