std::optional не может найти в namespace'е std

131
05 января 2020, 17:10

на самом простом поймал ошибки, при объявлении std::optional ругается на отсутствие члена optional в пространстве имен. В чем может быть проблема

#include <optional>
int main()
{
    std::optional<char> a;
    return 0;
}
Answer 1

Подобная ошибка выдается Visual Studio 2017 если в установках проекта не выбран режим C++17 (/std:c++17). При этом в окне Output она сопровождается сообщением

class template optional is only available with C++17 or later.

Я подозреваю, что вы разглядываете ошибки компиляции в этом "новом" странном GUI-шном окне Errors, вместо того, чтобы пойти в нормальное человеческое окно Output и посмотреть полный вывод компилятора там. По этой причине вы и не увидели вышеупомянутого сообщения.

Answer 2

Две наиболее распространенные причины этого сообщения компилятора могут быть.

Первая причина - компилятор не поддерживает std::optional.

Вторая причина - вы не включили заголовок <optional>.

Еще может быть, что вы включили этот заголовок в Visual Studio перед заголовком stdafx.h.

READ ALSO
Как настроить стандартный код в Clion?

Как настроить стандартный код в Clion?

Как в Clion ( OS X 1014) установить стандартный код для cpp

119
Отправка сигнала в QT

Отправка сигнала в QT

Столкнулся со следующей проблемой- при emit сигнала с параметром в виде QByteArray длины до 3-х байт программа вылетает с фразой unknown signal

152
Как задать размер виджета в ячейке QTableWidget

Как задать размер виджета в ячейке QTableWidget

Помогите решить проблему

127
Обработка событий в OpenGL C++

Обработка событий в OpenGL C++

Хочу написать программу, которая будет строить треугольник СерпинскогоМне нужно получить координаты первого треугольника, но я не хочу...

138