Namespaces
Variants
Actions

std::expected<T,E>::~expected

From cppreference.com
< cpp‎ | utility‎ | expected
 
 
Utilities library
General utilities
Relational operators (deprecated in C++20)
(C++20)(C++20)(C++20)  
(C++20)
(C++20)
(C++14)
(C++11)
(C++11)
(C++23)
(C++11)
(C++17)
Common vocabulary types
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)


 
 
constexpr ~expected();
(since C++23)

[edit] Main template destructor

Destroys the contained value:

  • If has_value() is true, destroys the expected value.
  • Otherwise, destroys the unexpected value.

This destructor is trivial if std::is_trivially_destructible_v <T> and std::is_trivially_destructible_v <E> are both true.

[edit] void partial specialization destructor

If has_value() is false, destroys the unexpected value.

This destructor is trivial if std::is_trivially_destructible_v <E> is true.

[edit] Example

Run this code
#include <expected>
#include <print>
 
void info(auto name, int x)
{
 std::println ("{} : {}", name, x);
}
 
struct Value
{
 int o{};
 ~Value() { info(__func__, o); }
};
 
struct Error
{
 int e{};
 ~Error() { info(__func__, e); }
};
 
int main()
{
 std::expected <Value, Error> e1{42};
 std::expected <Value, Error> e2{std::unexpect, 13};
 std::expected <void, Error> e3{std::unexpect, 37};
}

Output:

~Error : 37
~Error : 13
~Value : 42
Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/utility/expected/%7Eexpected&oldid=183125"

AltStyle によって変換されたページ (->オリジナル) /