如何在Xcode中获得std :: optional支持?

问题描述

我试图在Xcode 12.0 Mac OS项目中使用std :: optional。我收到错误消息: 名称空间“ std”中没有名为“ optional”的模板

#include <optional>

std::optional<int> o;

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

enter image description here

解决方法

Apple作为Xcode 12(和11)的一部分提供的libc ++版本包括对许多C ++ 17功能的支持,包括optional。参见Xcode 11 release notes

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可用。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...