C++ c+的精确差异+;11使用libc+时的支持+;与libstc++;在苹果LLVM4.1上?

C++ c+的精确差异+;11使用libc+时的支持+;与libstc++;在苹果LLVM4.1上?,c++,c++11,xcode4.5,llvm-clang,llvm-c++-api,C++,C++11,Xcode4.5,Llvm Clang,Llvm C++ Api,在使用苹果LLVM编译器附带的libc++和libstdc++时,有人能提出一种方法来确定c++11支持的差异吗 特别是,我目前正在使用Xcode 4.5.2附带的LLVM 4.1 据推测,答案部分取决于clang为此版本提供的c++11支持级别,部分取决于4.1附带的libc++和libstdc++版本 我的总体感觉是,现在使用libc++时,对c++11的支持“几乎完成”,但在切换到libstdc++时,您会失去一些东西,但我不知道是什么——一些简单的c++11特性似乎在这两种情况下都能很好

在使用苹果LLVM编译器附带的libc++和libstdc++时,有人能提出一种方法来确定c++11支持的差异吗

特别是,我目前正在使用Xcode 4.5.2附带的LLVM 4.1

据推测,答案部分取决于clang为此版本提供的c++11支持级别,部分取决于4.1附带的libc++和libstdc++版本

我的总体感觉是,现在使用libc++时,对c++11的支持“几乎完成”,但在切换到libstdc++时,您会失去一些东西,但我不知道是什么——一些简单的c++11特性似乎在这两种情况下都能很好地工作

我觉得GCC4.8附带的对libstdc++的c++11支持相当不错,但我不知道LLVM4.1附带的libstdc++是否已经过时

另外,我感觉在为osx或ios 6.01编译时,c++11支持的级别(使用llvm 4.1和libc++)没有差别,但我不是肯定的

对如何解决这些问题有什么建议吗


[上下文:由于上游依赖关系,我可能需要链接到libstdc++而不是libc++,因此我想知道我可能会丢失什么]

LLVM 4.1附带的libstdc++是gcc-4.2。该版本不支持C++11。不过它确实有一些tr1支持

此外,检查C++11语言特性的最佳方法是使用clang的
has_特性


对于C++11库功能,您需要使用libc++。

据我所知,苹果没有使用任何GPLv3许可的GCC版本,包括libstdc++位。如果这是正确的,我不完全确定它是正确的,那么您将看到GCC4.2的libstdc++,如果它包含任何C++11支持,我会感到惊讶。考虑到你说简单的C++11特性在这两个方面都可以很好地工作,我很可能被告知是错误的(我自己没有Mac),但是你是否可以提供一些关于你运行的测试的细节,以确保它们是对库特性的测试?另外,苹果已经修改了libstdc++,所以它可能比GCC支持的更多。我在std::vector上做了一个基于范围的for循环,但现在我猜它实际上没有使用库功能,而是使用了一些语法上的糖霜魔法。不幸的是,我在15年后重读C++,我的功夫有点生疏,我不太清楚什么是简单的一个测试语言与语言特征的线性关系。无论如何,你的解释,特别是关于苹果在GPL版本上立场的信息,是非常有意义的,并为我提供了一个合理的框架来完善我的理解。谢谢谢谢你的信息,太棒了!在你的信息和@hvd上面的评论之间,我认为我对这个问题有一个合理的处理。我要指出的是,在为IOS/arm或OSX/intel编译时,我仍然想知道在c++11支持(语言或库)方面是否有任何差异——这似乎不太可能,但在以前的版本中,在Objective-c扩展支持方面存在差异(例如)。我应该就此提出一个新问题吗?不,应该没有明显的区别。在每个版本中,相同的工具集针对两个平台。