table of contents
        
      
      
    - Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 
| std::reference_converts_from_temporary(3) | C++ Standard Libary | std::reference_converts_from_temporary(3) | 
NAME¶
std::reference_converts_from_temporary - std::reference_converts_from_temporary
Synopsis¶
 Defined in header <type_traits>
  
   template< class T, class U > (since C++23)
  
   struct reference_converts_from_temporary;
  
   Let V be std::remove_cv_t<U> if U is a scalar type or cv void, or U
    otherwise. If T
  
   is a reference type, and given a hypothetic expression e such that
    decltype(e) is V,
  
   the variable definition T ref = e; is well-formed and binds a temporary
    object to
  
   ref, then provides the member constant value equal to true. Otherwise, value
    is
  
   false.
  
   If T is an lvalue reference type to a const- but not volatile-qualified
    object type
  
   or an rvalue reference type, both std::remove_reference_t<T> and
  
   std::remove_reference_t<U> shall be complete types, cv void, or an
    arrays of unknown
  
   bound; otherwise the behavior is undefined.
  
   If an instantiation of a template above depends, directly or indirectly, on
    an
  
   incomplete type, and that instantiation could yield a different result if
    that type
  
   were hypothetically completed, the behavior is undefined.
  
   If the program adds specializations for
    std::reference_converts_from_temporary or
  
   std::reference_converts_from_temporary_v, the behavior is undefined.
Member constants¶
 true if T is a reference type, a U value can be bound to T in
  
   value copy-initialization, and a temporary object would be bound to the
  
   [static] reference, false otherwise
  
   (public static member constant)
Member functions¶
 operator bool converts the object to bool, returns value
  
   (public member function)
  
   operator() returns value
  
   (C++14) (public member function)
Member types¶
 Type Definition
  
   value_type bool
  
   type std::integral_constant<bool, value>
Notes¶
 std::reference_converts_from_temporary can be used for rejecting
    some cases that
  
   always produce dangling references.
Example¶
// Run this code
  
   #include <type_traits>
  
   int main() {}
  
   static_assert(std::reference_converts_from_temporary_v<int&&,
    int> == true);
  
   static_assert(std::reference_converts_from_temporary_v<const int&,
    int> == true);
  
   static_assert(std::reference_converts_from_temporary_v<int&&,
    int&&> == false);
  
   static_assert(std::reference_converts_from_temporary_v<const int&,
    int&&> == false);
  
   static_assert(std::reference_converts_from_temporary_v<int&&,
    long&&> == true);
  
   static_assert(std::reference_converts_from_temporary_v<int&&,
    long> == true);
See also¶
 is_convertible
  
   is_nothrow_convertible checks if a type can be converted to the other type
  
   (C++11) (class template)
  
   (C++20)
  
   invoke invokes any Callable object with given arguments
  
   invoke_r and possibility to specify return type
  
   (C++17) (since C++23)
  
   (C++23) (function template)
  
   bind binds one or more arguments to a function object
  
   (C++11) (function template)
  
   visit calls the provided functor with the arguments held by one or
  
   (C++17) more variants
  
   (function template)
  
   constructor constructs a new std::function instance
  
   (public member function of std::function<R(Args...)>)
  
   constructor constructs a new std::move_only_function object
  
   (C++23) (public member function of std::move_only_function)
  
   constructs the task object
  
   constructor (public member function of
    std::packaged_task<R(Args...)>)
| 2024.06.10 | http://cppreference.com |