14

我尝试使用不同的编译器(包括 gcc 6.1)编译以下程序:

#include <optional>
int main()
{
    std::optional<int> o1;
}

输出是

main.cpp:1:20:致命错误:可选:没有这样的文件或目录#include 可选

对于此处给出的示例,这甚至是正确的:http: //en.cppreference.com/w/cpp/utility/optional/optional

任何线索为什么?

4

2 回答 2

22

std::optional将成为 C++17 标准的一部分,但如果您想在此之前使用,则必须改用std::experimental::optionalheader 中可用的<experimental/optional>

于 2016-07-07T19:42:04.173 回答
9

它处于实验阶段(TS):

#include <experimental/optional>

例子:

http://coliru.stacked-crooked.com/a/09ab8d1e51680a79

#include <experimental/optional>
#include <iostream>
int main()
{
    std::experimental::optional<int> o1;
}
于 2016-07-07T19:43:26.107 回答