Aussie AI
Copy Elision in Modern C++
-
Book Excerpt from "C++ Ultra-Low Latency: Multithreading and Low-Level Optimizations"
-
by David Spuler, Ph.D.
Copy Elision in Modern C++
Copy elision is an automatic C++ compiler optimization that “elides” (removes) various “copy” operations on objects. I guess “copy removal” just didn’t have the same ring to it?
Copy elision works in particular situations in the C++ language. These situations include:
- Class-type
returnstatements — the main situation. - throw expressions (and handlers)
- Coroutines
The effect of copy elision is to avoid a full object copy. Instead, the place where the new object is used simply refers to the old object, which would have been copied without this optimization.
Technically, there are other unusual situations, and there are two variants of copy elision:
- Removal of copying, or
- Downgrading copying to a move operation.
You don’t need to modify your code to get the benefits of copy elision. In fact, you also don’t need to turn the optimizer up to eleven. Copy elision is a normal part of the C++ standard.
|
Ultra-Low Latency C++ Book: • Online: Table of Contents • PDF: Free PDF book download • Buy: C++ Ultra-Low Latency |
|
C++ Ultra-Low Latency: Multithreading and Low-Level Optimizations:
Get your copy from Amazon: C++ Ultra-Low Latency |