Кажется, что-то здесь что-то не хватает. Я переместился от boost::shared_ptr
до std::shared_ptr
. shared_ptr
был частью TR1 еще в середине 2000-х годов, и он должен быть доступен везде в 2012 году.
Попытка использовать shared_ptr
под Apple получает множество ссылок undefined:
SecureArray.h:26:12: error: no member named 'shared_ptr' in
namespace 'std'
using std::shared_ptr;
~~~~~^
SecureArray.h:27:12: error: no member named 'tr1' in namespace
'std'
using std::tr1::shared_ptr;
~~~~~^
SecureArray.h:487:5: error: unknown type name 'shared_ptr'
shared_ptr<SecureVector> m_vector;
Типичная команда компилятора следующая (как GCC, так и Clang):
clang++ -g2 -ggdb -O0 -fcatch-undefined-cxx0x-behavior
-DSAFEINT_DISALLOW_UNSIGNED_NEGATION=1 -pipe -std=c++0x -Wall -Wextra
-Wno-unused-parameter -Wno-tautological-compare
-I. -I./esapi -I./deps -I/usr/local/include -I/usr/include -fpic
-c src/DummyConfiguration.cpp -o src/DummyConfiguration.o
Я пытаюсь включить его следующим образом (я считаю, что мне нужно настроить его, но я не помню синтаксис С++, чтобы сказать "посмотрите здесь или посмотрите там" ):
#include <memory>
using std::shared_ptr;
using std::tr1::shared_ptr;
Apple man-страницы ничего не вызывают:
$ man shared_ptr
No manual entry for shared_ptr
$ man -k shared_ptr
shared_ptr: nothing appropriate
У меня Mac OS X 10.8 (полностью исправлена), Xcode (полностью исправлена) и установлены средства командной строки.
Итак, как использовать std:: shared_ptr на платформах Apple?