std::is_lvalue_reference (3) - Linux Manuals

std::is_lvalue_reference: std::is_lvalue_reference


std::is_lvalue_reference - std::is_lvalue_reference


Defined in header <type_traits>
template< class T > (since C++11)
struct is_lvalue_reference;

Checks whether T is a lvalue reference type. Provides the member constant value which is equal to true, if T is a lvalue reference type. Otherwise, value is equal to false.

Template parameters

T - a type to check

Helper variable template

template< class T > (since C++17)
inline constexpr bool is_lvalue_reference_v = is_lvalue_reference<T>::value;

Inherited from std::integral_constant

Member constants

value true if T is an lvalue reference type , false otherwise
         (public static member constant)

Member functions

              converts the object to bool, returns value
operator bool (public member function)

operator() returns value
              (public member function)

Member types

Type Definition
value_type bool
type std::integral_constant<bool, value>

Possible implementation

  template<class T> struct is_lvalue_reference : std::false_type {};
  template<class T> struct is_lvalue_reference<T&> : std::true_type {};


// Run this code

  #include <iostream>
  #include <type_traits>

  class A {};

  int main()
      std::cout << std::boolalpha;
      std::cout << std::is_lvalue_reference<A>::value << '\n';
      std::cout << std::is_lvalue_reference<A&>::value << '\n';
      std::cout << std::is_lvalue_reference<A&&>::value << '\n';
      std::cout << std::is_lvalue_reference<int>::value << '\n';
      std::cout << std::is_lvalue_reference<int&>::value << '\n';
      std::cout << std::is_lvalue_reference<int&&>::value << '\n';



See also

is_reference checks if a type is either a lvalue reference or rvalue reference
                    (class template)

is_rvalue_reference checks if a type is a rvalue reference
                    (class template)