Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::experi...nvertibleTo(3)  C++ Standard Libary std::experi...nvertibleTo(3)

NAME
       std::experimental::ranges::ConvertibleTo	       -       std::experimen-
       tal::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 ex-
       pression	above.

	  There	 need  not  be	any  subsumption relationship between Convert-
       ibleTo<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  re-
       quired 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-expres-
       sion is required
	  to be	equality preserving and	stable,	and the	evaluation of the  ex-
       pression	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)

http://cppreference.com		  2022.07.31	  std::experi...nvertibleTo(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::experimental::ranges::ConvertibleTo&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help