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

Mantrala Sandeep

⏱ 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 - we have heard of them, we use them regularly, and they are part of every C++ programmer’s daily work, but if I am honest, my own grasp of how they truly interact was a bit rusty until I dug into how they shape expressions, overload resolution, and constructor behavior.

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?

This talk shares the journey of going past surface-level rules to uncover the real mechanics: how these categories and expressions interact with overload resolution, when copy elision saves you, and how subtle traps can lead to unnecessary copies, dangling references, or surprising overload picks. 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

Mantrala Sandeep

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