3

我正在尝试在 Xcode 12.0 Mac OS 项目中使用 std::optional 。我收到错误:命名空间“std”中没有名为“可选”的模板

#include <optional>

std::optional<int> o;

我的设置是(我的项目需要 libc++):

在此处输入图像描述

4

2 回答 2

2

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在导致问题的“其他标志”中有一个。

于 2020-09-21T01:28:26.577 回答
0

std::optional类型是 C++17 特性。尽管您在设置中使用 C++17 进行编译,但请仔细查看标准库版本。它声明您使用的版本仅支持 C++11。

升级您的库以使用std::optional.

或者,您可以尝试查看#include <experimental/optional>您的库是否std::experimental::optional可用。

于 2020-09-20T14:44:17.400 回答