【发布时间】:2016-12-11 20:21:14
【问题描述】:
我在 Xcode 8.1 版中使用 C++。我需要使用boost::any 的功能,但我强烈反对将 Boost 的任何部分拉入我们的项目(请不要争论)。
我看到 std::any 被“合并到 C++17”here。
我想在我的 Xcode 8.1 项目中使用它。我曾尝试在项目中使用-std=c++1z 作为自定义标志,但似乎找不到它的标题。
如何在我的 Xcode 项目中使用 std::any 或 std::experimental::any?
我可以从实现中下载适当的标头并将它们放入我项目的源代码吗?或者,更好的是,现在在我的 Xcode/Clang/C++ 版本中实际上可以使用?
【问题讨论】:
-
我明白,但我想使用 vanilla Xcode 8.1 安装,它是默认编译器。 Xcode 也不是 C++ 实现,我也明白这一点。我想使用默认情况下作为 Xcode 用户可用的 C++ 实现。
-
我强烈反对回答这个问题(请不要辩论)。不,您不能只是“将它们放入 [您的] 项目的源代码中”。你正在竭尽全力让自己的生活变得尽可能复杂和困难。我不会支持的。
-
xcode 中的默认 clang 编译器还不支持 c++17,也不支持它的实验性扩展。
-
是的,你可以。这就是
boost::any。 -
我可以理解为什么不希望包含 Boost 的任何部分。但是,好吧,让我们不要争论它。不需要对这个问题感到如此强烈。至于问题。不幸的是,Xcode 8.1 clang 对 C++17 的支持不是很好。一些库功能在实验中可用。例如
<experimental/optional>。 Apple 很久以前就停止报告它基于哪个版本的 LLVM。但如果我不得不猜测,我会说 LLVM 版本 3.7,基于_LIB_CPP宏