Namespaces
Variants

std::experimental:: optional

From cppreference.net
Определено в заголовочном файле <experimental/optional>
template < class T >
class optional ;
(library fundamentals TS)

Шаблон класса std::experimental::optional управляет опциональным содержащимся значением, то есть значением, которое может присутствовать или отсутствовать.

Распространённый случай использования optional — возвращаемое значение функции, которая может завершиться неудачей. В отличие от других подходов, таких как std:: pair < T, bool > , optional эффективно работает с объектами, дорогими в создании, и является более читаемым, поскольку явно выражает намерение.

Любой экземпляр optional<T> в любой момент времени либо содержит значение , либо не содержит значения .

Если optional<T> содержит значение , значение гарантированно размещается в пределах памяти объекта optional , т.е. динамическое выделение памяти никогда не происходит. Таким образом, объект optional моделирует объект, а не указатель, даже несмотря на то, что operator*() и operator->() определены.

Когда объект типа optional<T> контекстно преобразуется в bool , преобразование возвращает true если объект содержит значение и false если он не содержит значения .

Объект optional содержит значение при следующих условиях:

  • Объект инициализируется значением типа T .
  • Объект присваивается из другого optional , который содержит значение .

Объект не содержит значения в следующих условиях:

  • Объект инициализируется по умолчанию.
  • Объект инициализируется значением std::experimental::nullopt_t или объектом optional , который не содержит значения .
  • Объекту присваивается значение std::experimental::nullopt_t или значение из optional , который не содержит значения .

Содержание

Параметры шаблона

T - тип значения, для которого управляется состоянием инициализации. Тип должен удовлетворять требованиям Destructible .

Типы членов

Тип члена Определение
value_type T

Функции-члены

создает объект optional
(public member function)
уничтожает содержащееся значение, если оно есть
(public member function)
присваивает содержимое
(public member function)
Наблюдатели
обращается к содержащемуся значению
(public member function)
проверяет, содержит ли объект значение
(public member function)
возвращает содержащееся значение
(public member function)
возвращает содержащееся значение, если оно доступно, иначе другое значение
(public member function)
Модификаторы
обменивает содержимое
(public member function)
создает содержащееся значение на месте
(public member function)

Объекты-члены

Название члена Определение
val (private) указатель на содержащееся значение (который указывает на член данных того же объекта), имя приведено только для демонстрации

Функции, не являющиеся членами класса

сравнивает объекты optional
(шаблон функции)
создаёт объект optional
(шаблон функции)
специализирует алгоритм std::swap
(функция)

Вспомогательные классы

специализирует алгоритм std::hash
(специализация шаблона класса)
(library fundamentals TS)
индикатор опционального типа с неинициализированным состоянием
(класс)
(library fundamentals TS)
тип тега для устранения неоднозначности при in-place конструировании опциональных типов
(класс)
(library fundamentals TS)
исключение, указывающее на проверенный доступ к опциональному объекту, не содержащему значения
(класс)

Вспомогательные объекты

(library fundamentals TS)
объект типа nullopt_t
(функция)
(library fundamentals TS)
объект типа std:: experimental :: in_place_t
(функция)