
- C++ Basics
- C++ Home
- C++ Overview
- C++ Environment Setup
- C++ Basic Syntax
- C++ Comments
- C++ Data Types
- C++ Variable Types
- C++ Variable Scope
- C++ Constants/Literals
- C++ Modifier Types
- C++ Storage Classes
- C++ Operators
- C++ Loop Types
- C++ Decision Making
- C++ Functions
- C++ Numbers
- C++ Arrays
- C++ Strings
- C++ Pointers
- C++ References
- C++ Date & Time
- C++ Basic Input/Output
- C++ Data Structures
- C++ Object Oriented
- C++ Classes & Objects
- C++ Inheritance
- C++ Overloading
- C++ Polymorphism
- C++ Abstraction
- C++ Encapsulation
- C++ Interfaces
is_lvalue_reference Template in C++
In this article we will be discussing the working, syntax and examples of std::is_lvalue_reference template in C++ STL.
is_lvalue_reference template in C++ is used to check whether the defined type is an lvalue reference or not.
What is an lvalue?
Lvalues are the values which are on the left side of an assignment operator. Lvalues are the expressions which refer to the memory location.
What is Lvalue reference?
Lvalue reference is a reference which binds to a lvalue. This is very similar to how we used to refer to a variable in traditional C++ or C language, i.e. by using ampersand symbol (&) with the variable itself to refer to its address.
Example
int& a;
Syntax
template <class T> is_lvalue_reference;
Parameters
The template can have only parameter of type T, and check whether the given type is a lvalue reference or not
Return value
It returns a Boolean value, true if the given value is lvalue reference, and false if the given value is not a lvalue reference or the when we are referencing to an unknown location
Example
Input: is_lvalue<int &>::value; Output: True Input: is_lvalue<int>::value; Output: False
Example
#include <iostream> #include <type_traits> using namespace std; class TP { }; int main() { cout << std::boolalpha; cout << "Checking for is_lvalue_reference: "; cout << "\nTP class : "<<is_lvalue_reference<TP>::value; cout << "\nTP& : "<< is_lvalue_reference<TP&>::value; cout << "\nTP&&: "<< is_lvalue_reference<TP&&>::value; return 0; }
Output
If we run the above code it will generate the following output −
Checking for is_lvalue_reference: TP class : false TP& : true TP&&: false
Example
#include <iostream> #include <type_traits> using namespace std; int main() { cout << std::boolalpha; cout << "Checking for is_lvalue_reference: "; cout << "\nint : "<<is_lvalue_reference<int>::value; cout << "\nint& : "<< is_lvalue_reference<int&>::value; cout << "\nint&&: "<< is_lvalue_reference<int&&>::value; cout << "\nchar : "<<is_lvalue_reference<char>::value; cout << "\nchar& : "<< is_lvalue_reference<char&>::value; cout << "\nchar&&: "<< is_lvalue_reference<char&&>::value; cout << "\nfloat : "<<is_lvalue_reference<float>::value; cout << "\nfloat& : "<< is_lvalue_reference<float&>::value; cout << "\nfloat&&: "<< is_lvalue_reference<float&&>::value; cout << "\ndouble : "<<is_lvalue_reference<double>::value; cout << "\ndouble& : "<< is_lvalue_reference<double&>::value; cout << "\ndouble&&: "<< is_lvalue_reference<double&&>::value; return 0; }
Output
If we run the above code it will generate the following output −
Checking for is_lvalue_reference: int : false int& : true int&&: false char : false char& : true char&&: false float : false float& : true float&&: false double: false double : true double&&: false
- Related Articles
- lvalue and rvalue in C
- What are rvalue and lvalue in C#?
- Template Metaprogramming in C++
- is_final template in C++
- is_fundamental Template in C++
- is_pod template in C++
- is_pointer Template in C++
- is_signed template in C++
- is_unsigned template in C++
- is_void template in C++
- is_standard_layout template in C++
- is_class template in C++
- is_const Template in C++
- is_rvalue_reference Template in C++
- is_empty template in C++
