Трюк, который вы нашли, действителен, но бесполезен. Центральная особенность shared_ptr
- подсчет ссылок, который вы здесь подменяете. Инструмент удаления (второй аргумент конструктора) предназначен для использования shared_ptr
с ресурсами, отличными от простых указателей. Вы можете использовать его с файлами, например:
typedef boost::shared_ptr FilePtr;
void FileClose( FILE* pf ) { if ( pf ) fclose( pf ); }
FilePtr pfile( fopen( "filename" ), FileClose );
То же самое с соединениями с базой данных, сокетами и т. Д. И т. Д. И RAII в общем.