Last Updated: May 17, 2026
Pre-C++11, every kind of "give this thing a starting value" used a slightly different syntax, and each one had its own pitfalls. Brace initialization, introduced in C++11, was the standard's attempt to make {...} work consistently across every type: built-ins, structs, classes, containers, arrays, even return values. This chapter walks through how it works, why it's stricter than the old forms in a good way, and the handful of spots where the rules surprise people.