Estou considerando o uso de alguns recursos do C ++ 11 (como auto
por exemplo) em alguns projetos de plataforma cruzada (Windows + Mac). No Windows, o Visual Studio oferece suporte a partes do próximo padrão C ++ 11 que me permitiria simplificar partes da base de código, então, naturalmente, eu estaria interessado em começar a usar esses recursos.
Mas, pelo que eu sei, a versão atual do XCode (3.2.4 + GCC 4.2) não oferece suporte a nenhum recurso do C ++ 11. Posso atualizar a versão GCC ou a versão CLang de alguma forma? Ou devo apenas morder minha língua e esperar que a Apple empacote uma nova versão no futuro?
Respostas:
O Xcode 4.2 finalmente adicionou suporte para C ++ 0X:
Na tela de configurações de construção do projeto, ative as opções "Todas".
Na seção "Opções de construção", defina o compilador como "Compilador Apple LLVM 3.0".
Role para baixo até a seção "Apple LLVM Compiler 3.0 - Language" e defina "C ++ Language Dialect" como "C ++ 0X" e "C ++ Standard Library" como "libc ++".
O std :: move (), o construtor de movimento e a referência de valor R funcionam como esperado, e estou testando no std :: thread e std :: atomic.
fonte
GNU++0X
opção peloC++ Language Dialect
e alibstdc++
opção peloC++ Standard Library
? Quando eles devem ser usados?/Developer/About\ Xcode.pdf
e sim, diz que C ++ 11 é compatível, mas quando eu uso-std=gnu++0x
ele soltacc1plus: error: unrecognized command line option "-std=0x++"
! Devo usar emclang++
vez disso?clang++
ao compilar, nãog++
, é por isso que o suporte a C ++ 11 falha ao tentar usar ag++
partir da linha de comando (porque o antigog++
XCode fornece não o suporta). Apenas para sua informação.======= Atualização 2012: =======
Comece com o Clang - muitos recursos do C ++ 11 agora estão disponíveis no Clang. Ele está incluído no Xcode.
======= Resposta original de janeiro de 2011: =======
o compilador da Intel pode ser a maneira mais limpa de se fazer neste momento. http://software.intel.com/en-us/articles/intel-composer-xe/
o clang é promissor, mas não é particularmente estável ou apresenta recursos do wrt c ++ 0x. c ++ ainda é muito novo para o clang.
gcc: relativamente maduro, mas você terá que escrever e manter seus plug-ins de compilador para xcode.
você também pode especificar scripts personalizados, mas isso é difícil de manter ... a menos que você faça tudo e crie uma ferramenta adaptadora.
fonte
O Xcode usa os compiladores GCC ou Clang C ++. Quaisquer recursos suportados por esses compiladores são válidos. A página de compatibilidade C ++ do GCC está aqui e a página de compatibilidade Clang C ++ está aqui .
fonte
Descobri que auto, decltype (), range based "for (:)" funciona em um projeto de plataforma cruzada (LLVM para MacOSX, iOS, gcc / linux, MSVC 10 / windows).
lambdas e macros variadic não parecem funcionar no LLVM, infelizmente.
fonte