В случае, если это может помочь кому-то еще ...
Потребности моего проекта требуют использования SDK 10.6 и LLVM-gcc 4.2. Я не могу требовать clang для кода для компиляции.
Я обошел эту проблему, объявив свою переменную shared_ptr в родительской функции ... поместив нужный объект в кучу. В блоке я получаю доступ к объекту через переменную shared_ptr. Такое расположение приводит к тому, что shared_ptr неявно копируется в блок, в то время как копия в родительской функции может быть освобождена. Поскольку я не объявляю переменную в блоке, я обхожу ошибку.
Я использовал проверку препроцессора, чтобы использовать обычную переменную стека, если код строится на clang или каком-либо другом компиляторе.