Defined in header <concepts> | ||
|---|---|---|
template <class From, class To>
concept convertible_to =
std::is_convertible_v<From, To> &&
requires {
static_cast<To>(std::declval<From>());
};
| (since C++20) |
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 are equivalent.
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,
To is neither an object type nor a reference-to-object type, or static_cast<To>(fun()) is equal to []() -> To { return fun(); }(), and 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 fun() is not modified by either expression above. Expressions declared in requires-expressions of the standard library concepts are required to be equality-preserving (except where stated otherwise).
|
(C++11)(C++20) | checks if a type can be converted to the other type (class template) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/concepts/convertible_to