std::convertible_to(3) | C++ Standard Libary | std::convertible_to(3) |
NAME¶
std::convertible_to - std::convertible_to
Synopsis¶
Defined in header <concepts>
template< class From, class To >
concept convertible_to =
std::is_convertible_v<From, To> && (since C++20)
requires {
static_cast<To>(std::declval<From>());
};
The concept convertible_to<From, To> specifies that an expression of
the same type
and value category as those of std::declval<From>() can be implicitly
and explicitly
converted to the type To, and the two forms of conversion produce equal
results.
Semantic requirements
convertible_to<From, To> is modeled only if, given a function fun of
type
std::add_rvalue_reference_t<From>() such that the expression fun() is
equality-preserving,
* Either
* To is neither an object type nor a reference-to-object type, or
* static_cast<To>(fun()) is equal to []() -> To { return fun(); }(),
and
* One of the following is true:
* std::add_rvalue_reference_t<From> is not a reference-to-object type,
or
* std::add_rvalue_reference_t<From> is an rvalue reference to a
non-const-qualified type, and the resulting state of the object referenced
by fun() is valid but unspecified after either expression above; or
* the object referred to by fun() is not modified by either expression
above.
Equality preservation
Expressions declared in requires expressions of the standard library concepts
are
required to be equality-preserving (except where stated otherwise).
See also¶
is_convertible
is_nothrow_convertible checks if a type can be converted to the other type
(C++11) (class template)
(C++20)
2024.06.10 | http://cppreference.com |