【发布时间】:2017-10-22 12:01:14
【问题描述】:
我正在尝试让#include <experimental/any> 在clang OSX 上的C++ 程序中编译
// 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?如果是,如何获得支持?
【问题讨论】:
-
截至今日,clang 是否支持 C++17? 该标头不是 C++17 的一部分,您说“截至今日”,但我们不知道您的 Clang 有多旧(因为 Apple 给它一个愚蠢的版本号,与 LLVM 版本号无关)。
-
截至今天,clang 是否支持 C++17? 如果我可以将我的clang升级到C++ 17并直接使用
std::any是一个问题。我想答案是否定的。那么如何让#include <experimental/any>编译是我寻求答案的主要问题。我已将我的 Xcode 更新为在最新 Sierra 版本上运行的最新版本。我不确定是否有任何方法可以显式升级clang++但我拥有的应该是最新的。对吧? -
您可以在clang.llvm.org/cxx_status.html 和libcxx.llvm.org/cxx1z_status.html 自己回答这个问题,但这是针对上游 Clang 的,而不是 Xcode 包含的任何内容。 Xcode 不太可能包含最新的,但它们奇怪的版本编号让人很难知道。请参阅沃尔特的回答。
标签: c++ c++11 clang++ c++17 llvm-clang