std::experimental::ranges::ConvertibleTo
Defined in header <experimental/ranges/concepts>
|
||
template
<
class From, class To >
concept bool ConvertibleTo =
|
(ranges TS) | |
The concept ConvertibleTo<From, To> specifies that an expression of the type and value category specified by From
can be implicitly and explicitly converted to the type To
Specifically, ConvertibleTo<From, To> is satisfied only if, given the invented function
To test(From (
&f)
(
)
)
{
return f(
)
;
}
and a function f
of type From () such that the expression f()
- Either
To
is neither an object type nor a reference-to-object type, or-
static_cast<To>(f())
is equal to
test(f)
- One of the following is true:
From
is not a reference-to-object type, or-
From
is an rvalue reference to a non-const-qualified type, and the resulting state of the object referenced by f() - the object referred to by
f()
is not modified by either expression above.
There need not be any subsumption relationship between ConvertibleTo<From, To> and std::is_convertible <From, To> :: value
Equality preservation
An expression is equality preserving if it results in equal outputs given equal inputs.
- The inputs to an expression consist of its operands.
- The outputs of an expression consist of its result and all operands modified by the expression (if any).
Every expression required to be equality preserving is further required to be stable
Unless noted otherwise, every expression used in a requires-expression
See also
(C++11)(C++20)
|
checks if a type can be converted to the other type (class template) |