2013 C++ __full__ Now
2013 was the year C++ stopped being your dad’s systems language and started flirting with modernity. The ISO standard known as C++11 (published late 2011) had finally trickled down from compiler god-mode to everyday build systems. GCC 4.8.1 was solid. Clang 3.3 was a revelation. Even Visual Studio 2013— yes, Microsoft —started playing catch-up with real move semantics and variadic templates. Let’s start with auto . In 1998, auto was a joke—a keyword that meant "please ignore me." In 2013, auto meant finally, I don't have to type std::vector<std::unique_ptr<Foo>>::const_iterator like a medieval scribe .
Initialization was still a minefield:
If you used C++ in 2011, you felt old. If you used it in 2012, you felt hopeful. But in ? You finally felt dangerous again. 2013 c++
Multithreading? C++11 gave us std::thread , std::mutex , and std::atomic . But in 2013, writing correct lock-free code still required sacrificing a goat to Herb Sutter. 2013 C++ was the turning point. It was no longer just "C with classes and footguns." It was a language that admitted: maybe compile-time computation (constexpr), functional patterns (lambdas), and deterministic RAII could coexist. 2013 was the year C++ stopped being your
Foo f1(); // Most vexing parse: it's a function declaration. Foo f2{}; // Ah, uniform initialization. Unless it isn't. And compile times? You could brew coffee, drink it, and contemplate your life choices while #include <boost/spirit/> did its dark magic. std::string didn’t have starts_with() or ends_with() . You rolled your own or used .find() == 0 like a savage. std::regex was in the standard—but its performance was so tragically slow that many shops banned it in hot paths. Clang 3