What is lvalue and rvalue
Last updated: April 1, 2026
Key Facts
- Lvalues can appear on both left and right sides of assignment operators
- Rvalues can only appear on the right side of assignment operators
- Lvalue references (&) bind to lvalues; rvalue references (&&) bind to rvalues
- Rvalue references enable move semantics for efficient resource management
- Understanding lvalues and rvalues is critical for modern C++11 and later programming
Lvalues and Rvalues Explained
Lvalues and rvalues are fundamental C++ concepts describing value categories and where expressions reside in memory. An lvalue is an expression that refers to an object with a persistent memory address that you can take with the address-of operator (&). An rvalue is an expression that evaluates to a temporary value without a persistent address you can reference.
Lvalue Characteristics
Lvalues include variables, object members, array elements, and anything you can take the address of. For example, int x = 5; makes x an lvalue because it has a persistent memory location. Lvalues persist beyond the current expression and can appear on either side of assignment operators: x = 10; or y = x;.
Rvalue Characteristics
Rvalues include temporary values, literals, and results of operations. For example, int y = x + 5; produces an rvalue from the addition operation. Rvalues exist only for expression evaluation and cannot appear on the left side of assignment. You cannot take the address of an rvalue.
References and Move Semantics
Lvalue references (declared with &) bind to lvalues: int& ref = x;. Rvalue references (declared with &&) bind to rvalues: int&& ref = x + 5;. C++11 introduced rvalue references to enable move semantics, allowing efficient transfer of ownership of resources like memory or file handles without copying.
Practical Applications
Understanding lvalues and rvalues is essential for writing efficient modern C++ code. Move constructors and move assignment operators exploit rvalue references to avoid unnecessary copying. Standard library functions like std::move() cast lvalues to rvalues, enabling move semantics in generic code. This distinction powers optimization techniques that make C++ performant for resource-intensive applications.
Related Questions
What is the difference between lvalue and rvalue references?
Lvalue references (&) bind to lvalues with persistent addresses, while rvalue references (&&) bind to temporary rvalues. Rvalue references enable move semantics for efficient resource transfer.
What is move semantics in C++?
Move semantics is a C++11 feature that transfers resources from temporary objects to permanent ones instead of copying them, dramatically improving performance by avoiding expensive memory duplication operations.
How are move semantics related to rvalues?
Move semantics use rvalue references to detect temporary objects and efficiently transfer ownership of their resources. Move constructors and move assignment operators accept rvalue references to implement this optimization.
What are references in C++?
References are aliases to existing variables that provide another name for the same memory location, allowing pass-by-reference function parameters and rvalue references for move operations.
Can you give examples of lvalues and rvalues?
Lvalues: variables (x), object members (obj.member), array elements (arr[0]). Rvalues: literals (5, "hello"), function returns producing temporaries, results of arithmetic operations (x+y).
Why does understanding lvalues matter for performance?
Understanding lvalues and rvalues helps you write efficient code by allowing the compiler to optimize resource management, particularly through move semantics that eliminate unnecessary copying of large objects.
More What Is in Daily Life
- What Is a Credit ScoreA credit score is a three-digit number, typically ranging from 300 to 850, that represents your cred…
- What Is CD rates make no sense based on length of time invested. Explain like I'm 5CD (Certificate of Deposit) rates often don't increase with longer lock-up times the way people expe…
- What is a phdA PhD (Doctor of Philosophy) is a doctoral degree earned after completing advanced academic research…
- What is a polymathA polymath is a person with deep knowledge and expertise across multiple different fields or academi…
- What is aaveAAVE stands for African American Vernacular English, a dialect with distinct grammar, pronunciation,…
- What is aarch64ARMv8-A (commonly called ARM64 or AArch64) is a 64-bit processor architecture developed by ARM Holdi…
- What is about menTopics and discussions about men typically encompass masculinity, male identity, gender roles, men's…
- What is abiturAbitur is the German academic qualification awarded upon completion of secondary education, typicall…
- What is abrosexualAbrosexual is a sexual orientation identity where a person's sexual attraction changes or fluctuates…
- What is abgABG is an Indonesian acronym standing for 'Anak Baru Gede,' which refers to adolescent girls or teen…
- What is aaaAAA batteries are a standard cylindrical battery size measuring 10.5mm in diameter and 44.5mm in len…
- What is aacAAC (Advanced Audio Codec) is a digital audio compression format that provides better sound quality …
- What is aaa gameAAA games are high-budget video games developed by large studios with budgets typically exceeding $1…
- What is a proxyA proxy is a server that acts as an intermediary between your device and the internet, forwarding yo…
- What is ableismAbleism is discrimination and prejudice against people with disabilities based on the assumption tha…
- What is absAbs, short for abdominal muscles, are the muscles in your core that flex your spine and stabilize yo…
- What is abortionAbortion is a medical procedure that ends pregnancy by removing the fetus before viability. It can b…
- What is accutaneAccutane (isotretinoin) is a powerful prescription medication derived from vitamin A used to treat s…
- What is acetaminophenAcetaminophen, also known as paracetamol, is an over-the-counter pain reliever and fever reducer use…
- What is acidAcid is a chemical substance that donates protons (hydrogen ions) to other substances, characterized…
Also in Daily Life
- How To Save Money
- Why are so many white supremacist and right wings grifters not white
- Does "I'm 20 out" mean youre 20 minutes away from where you left, or youre 20 minutes away from your destination
- Why are so many men convinced that they are ugly
- What does awol mean
- What does asl mean
- What does ad mean
- What does asap mean
- What does apex mean
- What does asmr stand for
- What does atp mean
- What causes autism
- What does abg mean
- What does am and pm mean
- What does a fox sound like
More "What Is" Questions
Trending on WhatAnswer
Browse by Topic
Browse by Question Type
Sources
- cppreference - Value Categories CC-BY-SA-3.0
- Value Semantics - Wikipedia CC-BY-SA-4.0
- C++ Standards Committee ISO