Kirill Lykov
Kirill Lykov

Reputation: 1313

LLVM&Clang support of C++11

I have some code written by me for MS VC++10. I use C++11 and, in particular, expressions like

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

Now I'm trying out MacOS and XCode with llvm&clang and my code can't be compiled! The question is why? Perhaps, I shall specify an option to use c++11. In this case, where can I fix it in xcode?

Upvotes: 4

Views: 6014

Answers (2)

rubenvb
rubenvb

Reputation: 76519

For a list of C++11 features Clang currently supports, see this nice list. Lambda expressions (and syntactically related initialzer lists) are currently not implemented.

Your only choice for now (until Clang devs implement lambda support) is using MacPorts' GCC 4.5/4.6 compilers.

The extra command-line option would be -std=c++0x (in the next version of Clang and GCC it will be the proper -std=c++11).

Upvotes: 5

Howard Hinnant
Howard Hinnant

Reputation: 218750

You will need Xcode 4.2.

In your build settings, search for "c++0x" and set the "C++ Language Dialect to C++0x [-std=c++0x]". Then search for "libc++" and set the "C++ Standard Library" to "libc++".

Not all C++11 facilities are available. For example lambdas are not yet supported.

Upvotes: 14

Related Questions