std::experimental::optional::optional - cppreference.com ([original](http://en.cppreference.com/w/cpp/experimental/optional/optional.html)) (raw)

C++

Compiler support
Freestanding and hosted
Language
Standard library
Standard library headers
Named requirements
Feature test macros (C++20)
Language support library
Concepts library (C++20)
Diagnostics library
Memory management library
Metaprogramming library (C++11)
General utilities library
Containers library
Iterators library
Ranges library (C++20)
Algorithms library
Strings library
Text processing library
Numerics library
Date and time library
Input/output library
Filesystem library (C++17)
Concurrency support library (C++11)
Execution control library (C++26)
Technical specifications
Symbols index
External libraries

[edit]

Experimental

Technical Specification
Filesystem library (filesystem TS)
Library fundamentals (library fundamentals TS)
Library fundamentals 2 (library fundamentals TS v2)
Library fundamentals 3 (library fundamentals TS v3)
Extensions for parallelism (parallelism TS)
Extensions for parallelism 2 (parallelism TS v2)
Extensions for concurrency (concurrency TS)
Extensions for concurrency 2 (concurrency TS v2)
Concepts (concepts TS)
Ranges (ranges TS)
Reflection (reflection TS)
Mathematical special functions (special functions TR)
Experimental Non-TS
Pattern Matching
Linear Algebra
std::execution
Contracts
2D Graphics

[edit]

Library fundamentals

experimental::optional
experimental::any
experimental::basic_string_view
experimental::sample
experimental::shared_ptr
experimental::weak_ptr
experimental::apply
experimental::invocation_typeexperimental::raw_invocation_type
experimental::search
experimental::default_searcherexperimental::make_default_searcher
experimental::boyer_moore_searcherexperimental::make_boyer_moore_searcher
experimental::boyer_moore_horspool_searcherexperimental::make_boyer_moore_horspool_searcher
Type-erased and polymorphic allocators
Variable templates for type traits

[edit]

std::experimental::optional

Member functions
optional::optional
optional::~optional
optional::operator=
Observers
optional::operator->optional::operator*
optional::operator bool
optional::value
optional::value_or
Modifiers
optional::emplace
optional::swap
Non-member functions
operator==operator!=operator<operator<=operator>operator>=
make_optional
swap
Helper classes
hash
nullopt_t
in_place_t
bad_optional_access
Helper objects
nullopt
in_place

[edit]

| ~optional(); | | (library fundamentals TS) | | ------------- | | ------------------------- |

If the object contains a value and the type T is not trivially destructible (see std::is_trivially_destructible), destroys the contained value by calling its destructor, as if by val->T::~T().

Otherwise, does nothing.

[edit] Notes

If T is trivially-destructible, then this destructor is also trivial, so optional<T> is also trivially-destructible.