std::experimental:: optional
|
Определено в заголовочном файле
<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
(функция) |