C++ Value Categories in Action: The Foundation Behind Overloads, Moves, and the Broader System

Sandeep Mantrala

⏱ 60 minute session
beginner
intermediate
14:00-15:00, Monday, 23rd June 2025

Lvalues, rvalues, xvalues, glvalues, prvalues, reference binding, std::move, and temporary materialization - these are terms we hear often and use regularly in our daily C++ programming. They form the foundation for understanding modern C++, yet mistakes around them are surprisingly common. Without taking the time to understand the rules behind them, we often run into confusing behavior without knowing why.

Why does std::move sometimes end up calling the copy constructor?

When exactly does the compiler materialize temporaries, and how does that affect which overload or constructor is chosen?

These are some of the questions this session will explore. We’ll start with a clear understanding of value categories, and from there explore how they influence move semantics, copy elision, overload resolution, and more.

While this is primarily a basic to intermediate talk, I hope programmers at every level will leave with practical insights they can immediately apply to write cleaner, safer and faster C++ code.


🏷 std::move
🏷 std::forward

Sandeep Mantrala

Sandeep is a C++ engineer specializing in market data feed handlers and high-performance financial systems. With expertise in low-latency trading infrastructure, he focuses on optimizing real-time data processing and building scalable C++ applications for financial markets.

Find him online: LinkedIn: https://www.linkedin.com/in/sandeep-kumar-mantrala