如何在OSX上为clang编译#include <experimental any =“”>

时间:2017-05-22 18:11:39

标签: c++ c++11 clang++ c++17 llvm-clang

我试图让#include <experimental/any>在我的C ++程序中编译OSX

// test.cpp
#include <experimental/any>

int main() {
  return 0;
}

尝试从here

学习的以下命令/选项
clang++ -std=c++14 test.cpp -o test -std=c++1z -stdlib=libc++
clang++ -std=c++1x test.cpp -o test -std=c++1z -stdlib=libc++
clang++ -std=c++1y test.cpp -o test -std=c++1z -stdlib=libc++
clang++ -std=c++1z test.cpp -o test -std=c++1z -stdlib=libc++

但它没有编译和抱怨以下错误:

fatal error: 'experimental/any' file not found

clang++ --version产生以下内容:

Apple LLVM version 8.1.0 (clang-802.0.42)
Target: x86_64-apple-darwin16.5.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

如何让#include <experimental/any>进行编译?

我应该在我的机器上升级clang吗?

截至今天,clang是否支持C ++ 17?如果是,怎么能得到它的支持?

2 个答案:

答案 0 :(得分:4)

对于OSX 10.12.5(使用Xcode Developer工具),我们得到

> clang++ -v
Apple LLVM version 8.1.0 (clang-802.0.42)
Target: x86_64-apple-darwin16.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

any中没有/Library/Developer/CommandLineTools/usr/include/c++/v1/experimental,但只有

chrono
optional    
string_view 
tuple
utility
algorithm
dynarray    
ratio   
system_error    
type_traits

因此,似乎Apple的libc ++没有提供anyany中也没有/Library/Developer/CommandLineTools/usr/include/c++/v1/。您必须使用GCC或您自己的clang或boost/any.hpp,所有这些都可以通过homebrew安装。

答案 1 :(得分:3)

你拼错了。它是&#34;实验&#34;而不是&#34;实验&#34;。

但是,从Clang 4.0开始,您应该只使用<any>