2012-11-18 12 views
13

Wydaje mi się, że czegoś tu brakuje. Przeniosłem się z boost::shared_ptr do std::shared_ptr. shared_ptr był częścią TR1 z powrotem w połowie 2000 roku, a powinien on być dostępny wszędzie w 2012.Apple i shared_ptr

Próba użycia shared_ptr pod Apple obiecuje mi mnóstwo odniesień niezdefiniowanych:

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; 

typowego polecenia kompilator przedstawia się następująco (zarówno GCC i Clang fail):

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 

staram się umieścić go w następujący sposób (wierzę muszę podkręcić, ale nie przypominam sobie C++ składnia powiedzieć „patrzcie tutaj lub spójrz tam "):

#include <memory> 
using std::shared_ptr; 
using std::tr1::shared_ptr; 

strony Apple mężczyzna nie zwraca się nic:

$ man shared_ptr 
No manual entry for shared_ptr 
$ man -k shared_ptr 
shared_ptr: nothing appropriate 

Mam zainstalowany system Mac OS X 10.8 (w pełni załatane), Xcode (w pełni załatane) i Command Line Tools.

Jak korzystać ze std :: shared_ptr na platformach Apple?

+0

'jabłko' nie wydaje się być dobrym tagiem –

+0

Jakie wersje toolchain? To jest naprawdę ważne. Szczerze mówiąc, nie dbałem o system operacyjny! –

+0

Dzięki lekkości. Zrozumiany. Nie dbam też o Apple. – jww

Odpowiedz

20

#include <tr1/memory> będzie działać z każdym kompilatorem używając libstdC++. Alternatywnie, z Clang:

#include <memory> 
using std::shared_ptr; 

i skompilowanie z c++ -std=c++11 -stdlib=libc++ .... Nie mam pojęcia, dlaczego Clang domyślnie używa libstdC++; prawdopodobnie chodzi o kompatybilność z GCC.

Nie można znaleźć stron man, ponieważ libstdC++ nie ma stron podręcznika systemowego. Pomocne, czyż nie? W źródłowej dystrybucji jest dokumentacja HTML.

+0

Doskonale, dzięki. – jww

+0

"Pomocne, czyż nie" - czy to znaczy, że jesteśmy starzy ???? – jww