Поддержка LLVM & Clang в C ++ 11 - PullRequest
4 голосов
/ 02 ноября 2011

У меня есть код, написанный мной для MS VC ++ 10.Я использую C ++ 11 и, в частности, такие выражения, как

std::function<int (int)> f =...;
auto it = v.begin();
for_each(it1, it2,[&](int& i) { ++i;}); 

Теперь я пробую MacOS и XCode с llvm & clang, и мой код не может быть скомпилирован!Вопрос почему?Возможно, я укажу опцию использования c ++ 11.В этом случае, где я могу это исправить в xcode?

Ответы [ 2 ]

14 голосов
/ 02 ноября 2011

Вам понадобится Xcode 4.2.

В ваших настройках сборки найдите «c ++ 0x» и установите «языковой диалект C ++ на C ++ 0x [-std = c ++ 0x]»,Затем найдите «libc ++» и установите для «Стандартной библиотеки C ++» значение «libc ++».

Доступны не все средства C ++ 11.Например, лямбды еще не поддерживаются.

5 голосов
/ 02 ноября 2011

Список функций C ++ 11, которые в настоящее время поддерживает Clang, см. В этом приятном списке . Лямбда-выражения (и синтаксически связанные списки инициализаторов) в настоящее время не реализованы.

На данный момент ваш единственный выбор (пока разработчики Clang не реализуют поддержку лямбды) использует компиляторы MacPorts GCC 4.5 / 4.6.

Дополнительным параметром командной строки будет -std=c++0x (в следующей версии Clang и GCC это будет правильный -std=c++11).

...