Вы можете обновить до Xcode 4.1 (или любой другой версии, которую вы можете получить для Snow Leopard) и получить новый компилятор с несколькими дополнительными функциями C ++ 11. Здесь на Stack Overflow есть сообщения о том, как улучшить поддержку C ++ 11 в Xcode 4.1 на Snow Leopard.
Но даже самый последний компилятор, доступный через XCode, не поддерживает некоторые функции C ++ 11, такие как лямбды. Чтобы получить лучшую поддержку C ++ 11, вам нужно установить более новый компилятор, gcc 4.6 или 4.7 или Clang.
Я часто собираю последнюю версию clang из исходного кода. Это не сложно сделать, если вы знакомы с созданием другого программного обеспечения с открытым исходным кодом. Я использую репозитории git для clang и llvm, http://llvm.org/git/llvm.git
и http://llvm.org/git/clang.git
. Вы также можете найти инструкции на их веб-сайте для начала работы: http://clang.llvm.org/get_started.html. Когда у вас есть источник для clang и llvm, это просто ./configure && make && sudo make install
. (Возможно, вы захотите запустить тесты перед установкой, так как они находятся непосредственно в хранилище. После make
do make check
в каталоге llvm и после того, как он передает cd в tools / clang и запускает make test
. Если тогда все в порядке sudo make install
)
Я не помню, включал ли Snow Leopard libc ++ или нет, так что вам, возможно, придется это получить. http://libcxx.llvm.org/
После того, как все построено и установлено, вы можете сделать:
clang++ -std=c++11 -stdlib=libc++ main.cpp && ./a.out
и у вас должна быть лучшая поддержка C ++ 11.
Последние патчи в clang действительно улучшили поддержку последних функций, которые вы, вероятно, заметите как новый программист на C ++. Осталось еще несколько кусочков, но начиная с версии 3.1, и, насколько мне известно, в clang есть все функции C ++ 11, которые есть в gcc 4.7 или VC ++ 11, и даже больше. libc ++ также имеет наименьшее количество пробелов с точки зрения возможностей стандартной библиотеки C ++ 11 IME (хотя я думаю, что стандартная библиотека VC ++ также будет довольно полной, когда они догонят языковые возможности, например char32_t и char16_t как нативные типы, так что обязательные специализации стандарта для этих типов могут быть использованы).