#c #std #stdoptional
#c #std #стандартный вариант
Вопрос:
Этот код не компилируется с помощью команды g -std=c 17 main.cpp
#include <iostream>
#include <experimental/optional>
int main()
{
std::optional<int> x;
std::cout << "Hello World";
return 0;
}
Ошибки заключаются в следующем:
- ошибка: ’optional’ не является членом ‘std’
- ошибка: ожидаемое первичное выражение перед ‘int’
Есть ли способ заставить этот код скомпилироваться?
Ответ №1:
<experimental/optional>
Заголовок не определяет std::optional
, а скорее std::experimental::optional
. Чтобы получить std::optional
, который является (неэкспериментальной) частью стандарта C 17, вы должны просто #include <optional>
.