- Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 - Leap-15.6
 
| std::experimental::ranges::ConvertibleTo(3) | C++ Standard Libary | std::experimental::ranges::ConvertibleTo(3) | 
NAME¶
std::experimental::ranges::ConvertibleTo - std::experimental::ranges::ConvertibleTo
Synopsis¶
 Defined in header <experimental/ranges/concepts>
  
   template< class From, class To >
  
   concept bool ConvertibleTo =
  
   std::is_convertible<From, To>::value && (ranges TS)
  
   requires(From (&f)()) {
  
   static_cast<To>(f());
  
   };
  
   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, and the two forms of conversion are equivalent.
  
   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() is equality-preserving (see below),
  
   * Either
  
   * To is neither an object type nor a reference-to-object type, or
  
   * static_cast<To>(f()) is equal to test(f), and
  
   * 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() is valid but unspecified
  
   after either expression above; or
  
   * 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: two evaluations of such an expression with the same input objects
    must have
  
   equal outputs absent any explicit intervening modification of those input
    objects.
  
   Unless noted otherwise, every expression used in a requires-expression is
    required
  
   to be equality preserving and stable, and the evaluation of the expression
    may only
  
   modify its non-constant operands. Operands that are constant must not be
    modified.
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 |