我正在尝试在 Xcode 12.0 Mac OS 项目中使用 std::optional 。我收到错误:命名空间“std”中没有名为“可选”的模板
#include <optional>
std::optional<int> o;
我的设置是(我的项目需要 libc++):
我正在尝试在 Xcode 12.0 Mac OS 项目中使用 std::optional 。我收到错误:命名空间“std”中没有名为“可选”的模板
#include <optional>
std::optional<int> o;
我的设置是(我的项目需要 libc++):
Apple 作为 Xcode 12(和 11)的一部分提供的 libc++ 版本包括对许多 C++17 功能的支持,包括optional
. 请参阅 Xcode 11发行说明。
Xcode 中表示 libc++“支持 C++11”的文本与 Apple 过去发布的标准库 (libstdc++ v 4.2.1) 形成对比——后者不支持 C++11。这并不意味着它只支持 C++11 以排除 C++14/17/20/etc。
OP 在评论中提到他-std=gnu++11
在导致问题的“其他标志”中有一个。
该std::optional
类型是 C++17 特性。尽管您在设置中使用 C++17 进行编译,但请仔细查看标准库版本。它声明您使用的版本仅支持 C++11。
升级您的库以使用std::optional
.
或者,您可以尝试查看#include <experimental/optional>
您的库是否std::experimental::optional
可用。