The Curious Engineer

All blogs / C++

C++ Stories

cppstories.com

Stay up-to-date with Modern C++

C++Engineering blogs

Posts
365 from 1 Dec 2011 to 11 Oct 2026
Posting
monthly (10 in the last year)
Kind
personal blog
Feed
https://www.cppstories.com/index.xml

2026 8

  1. C++26 Contracts: Introduction to Preconditions and Postconditions
  2. Using C++17 std::optional
  3. C++26: Standard Library Hardening Experiments
  4. Understanding std::counting_semaphore and std::binary_semaphore from C++20
  5. How to join or concat ranges, C++26
  6. 15 Different Ways to Filter Containers in Modern C++
  7. Understanding std::shared_mutex from C++17
  8. IIFE for Complex Initialization

2025 12

  1. 7 Practical std::chrono Calendar Examples (C++20)
  2. Exploring C++20 std::chrono - Calendar Types
  3. C++ Templates: How to Iterate through std::tuple: C++26 Packs and Expansion Statements
  4. C++ Templates: How to Iterate through std::tuple: std::apply and More
  5. Structured bindings in C++17, 8 years later
  6. How to Avoid Thread-Safety Cost for Functions' static Variables
  7. How to Split Ranges in C++23
  8. Views as Data Members for Custom Iterators
  9. Details of std::mdspan from C++23
  10. Adjacency Matrix and std::mdspan, C++23
  11. How to use std::span from C++20
  12. Improving Code Safety in C++26: Managers and Dangling References

2024 14

  1. 8 More C++23 Examples
  2. C++23 Library Features and Reference Cards
  3. C++23 Language Features and Reference Cards
  4. Around the World in C++: Exploring Time Zones with std::chrono
  5. What is the current time around the world? Utilizing std::chrono with time zones in C++23
  6. Boost File Scanning Speed: Query File Attributes on Windows 50x Faster
  7. Enum Class Improvements for C++17, C++20 and C++23
  8. 22 Common Filesystem Tasks in C++20
  9. Displaying File Time in C++: Finally fixed in C++20
  10. Function Composition and the Pipe Operator in C++23 – With std::expected
  11. std::expected - Monadic Extensions
  12. Understand internals of std::expected
  13. Using std::expected from C++23
  14. Parsing Numbers At Compile Time with C++17, C++23, and C++26

2023 21

  1. Six Handy Operations for String Processing in C++20/23
  2. C++20, Spans, Threads and Fun
  3. Spans, string_view, and Ranges - Four View types (C++17 to C++23)
  4. Beautiful C++: 30 Core Guidelines... Book Review
  5. How to Use Monadic Operations for `std::optional` in C++23
  6. Five Advanced Initialization Techniques in C++: From reserve() to piecewise_construct and More.
  7. Understanding Ranges Views and View Adaptors Objects in C++20/C++23
  8. Introduction to Programming with C++ For Engineers, Book Review
  9. Finite State Machine with std::variant - Vending Machine
  10. Finite State Machine with std::variant
  11. Five Awesome C++ Papers for the H1 2023 - C++26, Varna and More
  12. Solving Undefined Behavior in Factories with constinit from C++20
  13. Storage duration and Non-local Objects in C++
  14. Q&A - C++ Initialization
  15. C++ Initialization Quiz
  16. C++ Initialization Story in Print
  17. Combining Collections with Zip in C++23 for Efficient Data Processing
  18. Examples of Projections from C++20 Ranges
  19. Fun with printing tables with std::format and C++20
  20. std::initializer_list in C++ 2/2 - Caveats and Improvements
  21. std::initializer_list in C++ 1/2 - Internals and Use Cases

2022 26

  1. C++ at the end of 2022
  2. C++ in 2022 - Survey
  3. Structured bindings in C++17, 5 years later
  4. const vs constexpr vs consteval vs constinit in C++20
  5. How to Measure String SSO Length with constinit and constexpr
  6. Summary of Non-Regular Data Members in C++
  7. Smaller C++20 Features - My Presentation
  8. 5 Ways to Improve or Avoid Loops in C++20...23
  9. Reducing Signed and Unsigned Mismatches with std::ssize()
  10. Integer Conversions and Safe Comparisons in C++20
  11. 20+ Ways to Init a String, Looking for Sanity
  12. Writing An Open-Source C++ Static Analysis Tool
  13. Formatting Custom types with std::format from C++20
  14. Five tricky topics for data members in C++20
  15. See My New Book: C++ Initialization Story
  16. C++20 Ranges Algorithms - sorting, sets, other and C++23 updates
  17. Embracing Modern C++ Safely, Book Review
  18. C++20 Ranges Algorithms - 11 Modifying Operations
  19. C++20 Ranges Algorithms - 7 Non-modifying Operations
  20. Three Benchmarks of C++20 Ranges vs Standard Algorithms
  21. C++20 Ranges: The Key Advantage - Algorithm Composition
  22. SFINAE, Immediate Context, Operator << and '\n'
  23. Modern C++ For Absolute Beginners, Book Review
  24. C++ Templates: How to Iterate through std::tuple: the Basics
  25. 20 Smaller yet Handy C++20 Features
  26. Simplify template code with fewer typename in C++20

2021 37

  1. C++ at the end of 2021
  2. C++ in 2021 - Survey
  3. Examples of 7 Handy Functions for Associative Containers in Modern C++
  4. C++ Links #6: C++23 Progress, Command Line, Containers, and more!
  5. Designated Initializers in C++20
  6. C++20: Heterogeneous Lookup in (Un)ordered Containers
  7. 6 More Ways to Refactor new/delete into unique ptr
  8. C++ Smart Pointers and Arrays
  9. 6 Ways to Refactor new/delete into unique ptr
  10. C++ Smart Pointers Reference Card
  11. C++ Return: std::any, std::optional, or std::variant?
  12. C++20 Oxymoron: constexpr virtual
  13. constexpr vector and string in C++20 and One Big Limitation
  14. Empty Base Class Optimisation, no_unique_address and unique_ptr
  15. Stricter Expression Evaluation Order in C++17
  16. How to Parallelise CSV Reader - C++17 in Practice
  17. C++ Lambda Story in Spanish!
  18. Software Architecture with C++, Book Review
  19. Five Awesome C++ Papers for the Q2 2021 and C++23 Status
  20. Extensible Stream Logging in Modern C++
  21. Three Myths About Floating-Point Numbers
  22. C++ Software Security Sins: Basic Issues
  23. Predefined C++20 Concepts: Callables
  24. Top-7 Performance Traps for Every Developer
  25. C++20 Concepts - a Quick Introduction
  26. How to Filter Elements - the Talk and Optimizations
  27. Five Awesome C++ Papers for the Q1 2021 and C++23 Status
  28. Strong Types in C++: A Concrete Example
  29. constexpr Dynamic Memory Allocation, C++20
  30. Non-Terminal Variadic Parameters and Default Values
  31. Parallel Compilation Experiments in C++Builder and Dev C++
  32. Implementing Parallel copy_if in C++
  33. Modern C++: Safety and Expressiveness with override and final
  34. C++ Lambda Story in Print
  35. Visual Studio's Natvis Debugging Framework Tutorial
  36. Get One year of Extra C++ Content + My First Year at Patreon
  37. A Debugging Tip: Write Custom Visualizers in Visual Studio

2020 34

  1. C++ at the end of 2020
  2. One Trick with Private Names and Function Templates
  3. Why Not a Functor and Lambda Story Updates
  4. Under the Covers of C++ Lambdas: Captures, Captures, Captures
  5. How to Share Code with Const and Non-Const Functions in C++
  6. C++20 Ranges, Projections, std::invoke and if constexpr
  7. Increased Complexity of C++20 Range Algorithms Declarations - Is It Worth it?
  8. How to Pass a Variadic Pack as the First Argument of a Function in C++
  9. How I Improved My Legacy C++ Project with PVS-Studio
  10. Replacing unique_ptr with C++17's std::variant a Practical Experiment
  11. 6 Efficient Things You Can Do to Refactor a C++ Project
  12. C++17: Polymorphic Allocators, Debug Resources and Custom Types
  13. starts_with() and ends_with() for Strings in C++20
  14. Lambda Week: Tricks
  15. Lambda Week: Going Generic
  16. Lambda Week: Capturing Things
  17. Lambda Week: Syntax changes, C++11 to C++20
  18. C++ Lambda Story is 100% Complete!
  19. See My Talk: Empty Base Class Optimisation, [[no_unique_address]] and other C++20 Attributes
  20. 5 Curious C++ Lambda Examples: Recursion, constexpr, Containers and More
  21. Polymorphic Allocators, std::vector Growth and Hacking
  22. C++ Lambdas, Threads, std::async and Parallel Algorithms
  23. 5 Advantages of C++ Lambda Expressions and How They Make Your Code Better
  24. Spaceship Generator for May the 4th in C++ - Results!
  25. How to Use C++ for Azure Storage
  26. How to Add Notes and Navigation Metadata Directly in Source Code in Visual Studio
  27. Runtime Polymorphism with std::variant and std::visit
  28. Const collection of unique_ptr, options and design choices
  29. An Extraterrestrial Guide to C++20 Text Formatting
  30. Five Awesome C++ Papers for the Prague ISO Meeting and C++20 Status
  31. Activity Indicators - Example of a Modern C++ Library
  32. C++20 Reference Card
  33. "Use the Force, Luke"... or Modern C++ Tools
  34. A Gentle Intro to Developing C++ Apps for AWS and S3

2019 44

  1. C++ at the end of 2019
  2. How C++17 Benefits from the Boost Libraries
  3. Threading in C++17: Loopers & Dispatchers
  4. How to Convert Numbers into Text with std::to_chars in C++17
  5. A Programmer’s Guide to Performance Analysis & Tuning on Modern CPUs
  6. Lazy initialisation in C++ and Multi-threading
  7. Five Awesome C++ Papers for the Belfast ISO Meeting and C++20 Status
  8. Lazy Initialisation in C++
  9. C++ Ecosystem: Compilers, IDEs, Tools, Testing and More
  10. How To Use Vocabulary Types from C++17, Presentation
  11. C++17 In Detail - Print Version!
  12. New new() - The C++17's Alignment Parameter for Operator new()
  13. 17 Smaller but Handy C++17 Features
  14. Moved or Not Moved - That Is the Question!
  15. Improve Multiplatform Code With __has_include and Feature Test Macros
  16. Five Awesome C++ Papers for Cologne ISO Meeting
  17. How To Detect Function Overloads in C++17/20, std::from_chars Example
  18. [Quick Case] Surprising Conversions of const char* to bool
  19. C++17 In Detail, June Update: Foreword and Printing Tests
  20. Space Game: A std::variant-Based State Machine by Example
  21. Heterogeneous Lookup in Ordered Containers, C++14 Feature
  22. [Tip] How to Reference the C++ Standard or a Proposal
  23. Converting from Boost to std::filesystem
  24. Improving Print Logging with Line Pos Info & Modern C++
  25. How to Iterate Through Directories in C++
  26. Dark Corner of C++ Corner Cases
  27. Lambdas: From C++11 to C++20, Part 2
  28. C++ Links #22
  29. C++17 In Detail is 100% Ready!
  30. C++ Links #21
  31. Lambdas: From C++11 to C++20, Part 1
  32. C++ Links #20
  33. Five Awesome C++ Papers For Kona 2019 ISO Meeting
  34. C++ Links #19
  35. 2 Lines Of Code and 3 C++17 Features - The overload Pattern
  36. C++ Links #18
  37. C++ Links #17
  38. std::filesystem in C++17 In Detail
  39. C++ Links #16
  40. std:filesystem::file_size Advantages and Differences
  41. C++ Links #15
  42. How to get File Size in C++?
  43. C++ Links #14
  44. C++ Links #13

2018 51

  1. C++ at the End of 2018
  2. How To Parallelise CSV Reader - New Chapter
  3. C++ Links #12
  4. C++ String Conversion: Exploring std::from_chars in C++17 to C++26
  5. C++ Links #11
  6. How to Boost Performance with Intel Parallel STL and C++17 Parallel Algorithms
  7. C++ Links #10
  8. The Amazing Performance of C++17 Parallel Algorithms, is it Possible?
  9. C++ Links #9
  10. Parallel Algorithms Chapter in C++17 In Detail
  11. C++ Links #8
  12. Five Awesome C++ Papers for San Diego
  13. C++ Links #7
  14. Let's Talk About String Operations in C++17
  15. C++ Links #6
  16. C++ Links #5
  17. Conversions, Searchers and C++17 In Detail Updates
  18. C++ Links #4
  19. C++ Links #3
  20. Professional C++ 4th Edition, Book Review
  21. C++ Links #2
  22. How To Use std::visit With Multiple Variants and Parameters
  23. C++ Links #1
  24. "C++17 In Detail" First Update
  25. Preprocessing Phase for C++17's Searchers
  26. Speeding up Pattern Searches with Boyer-Moore Algorithm from C++17
  27. C++17 In Detail Book!
  28. How to Initialize a String Member
  29. Speeding Up string_view String Split Implementation
  30. Performance of std::string_view vs std::string from C++17
  31. In-Place Construction for std::any, std::variant and std::optional
  32. Menu Class - Example of Modern C++17 STL features
  33. Parallel STL And Filesystem: Files Word Count Example
  34. Examples of Parallel Algorithms From C++17
  35. Everything You Need to Know About std::any from C++17
  36. A Wall of Your std::optional Examples
  37. Everything You Need to Know About std::variant from C++17
  38. Show me your code: std::optional
  39. Error Handling and std::optional
  40. C++ Templates - The Complete Guide 2nd Book Review
  41. Refactoring with C++17 std::optional
  42. Productive C++ Developer, my recent talk
  43. Deprecating Raw Pointers in C++20
  44. The C++ Standard Library book - overview & giveaway
  45. Simplify Code with if constexpr and Concepts in C++17/C++20
  46. What happens to your static variables at the start of the program?
  47. Static Variables Initialization in a Static Library, Example
  48. Factory With Self-Registering Types
  49. How to propagate const on a pointer data member?
  50. pimpl vs Abstract Interface - a practical tutorial
  51. The Pimpl Pattern - what you should know

2017 42

  1. C++ Status at the end of 2017
  2. How a weak_ptr might prevent full memory cleanup of managed object
  3. 5 ways how unique_ptr enhances resource safety in your code
  4. Summary of C++17 features
  5. code::dive 2017 conference report
  6. Enforcing code contracts with [[nodiscard]]
  7. Better code understanding with Sourcetrail
  8. Expressive C++ Coding Challenge Results
  9. How not_null can improve your code?
  10. Cpp Con 2017 Notes
  11. The Expressive C++17 Coding Challenge
  12. C++17 in detail: Summary & Bonus
  13. Learning from bugs and PVS-Studio Team
  14. C++17 in details: Standard Library Utilities
  15. C++17 STL Cookbook Book Review
  16. C++17 in details: Parallel Algorithms
  17. C++17 in Detail: Filesystem in The Standard Library
  18. Blog summary for the first half of 2017
  19. C++17 in details: Code Simplification
  20. Review: The Complete Software Developer’s Career Guide
  21. C++17 in details: Attributes
  22. Randomizing lines from a file, a tool in VC++ 2017
  23. C++17 in details: Templates
  24. Modern C++ Programming Cookbook Review
  25. C++17 in details: language clarifications
  26. C++17 in details: fixes and deprecation
  27. Enhancing Visual Studio with Visual Assist
  28. Please stop with performance optimizations!
  29. Curious case of branch performance
  30. Packing bools, Parallel and More
  31. Packing Bools, Performance tests
  32. final_act - follow-up
  33. Beautiful code: final_act from GSL
  34. C++18, Why not?
  35. C++18 Next Year!
  36. Windows File Tests
  37. C++ Jobs and Predictions
  38. Ways to Refactor Toggle/Boolean Parameters in C++
  39. Modernize: Sink Functions
  40. How To Stay Sane with Modern C++
  41. Const, Move and RVO
  42. All Major C++17 Features You Should Know

2016 22

  1. C++ Status at the end of 2016
  2. 2016 Blog Summary
  3. Async Remote Book Review
  4. Debugging Tips Extra stuff
  5. Please Declare Your Variables as Const
  6. Variadic Templates and a Factory Function
  7. Wrapping Resource Handles in Smart Pointers
  8. Code And Graphics in Mid 2016
  9. 7 books that taught me how to code
  10. 11 Debugging Tips That Will Save Your Time
  11. C++ (Core) Coding Guidelines
  12. Coding without Google
  13. Google benchmark library
  14. Custom Deleters for C++ Smart Pointers
  15. Visual Studio C++ Productivity Tips
  16. The Matrix Updated
  17. Nice C++ Factory Implementation 2
  18. SFINAE Followup
  19. Notes on C++ SFINAE, Modern C++ and C++20 Concepts
  20. Revisiting An Old Benchmark - Vector of objects or pointers
  21. Micro benchmarking libraries for C++
  22. Simple Performance Timer

2015 14

  1. C++ Status at the end of 2015
  2. Visual Studio slow debugging and _NO_DEBUG_HEAP
  3. OpenGL SuperBible 7th
  4. Applying the Strategy Pattern
  5. PDB Was Not Found - Linker Warning
  6. Flexible Particle System - Summary
  7. Soft Skills - Book Review
  8. Vulkan
  9. Flexible particle system - Renderer optimization
  10. Finding memory leaks with Deleaker
  11. (Non) Static Data Members Initialization, from C++11 till C++20
  12. Persistent Mapped Buffers in OpenGL
  13. Persistent Mapped Buffers, Benchmark Results
  14. Errata and a Nice C++ Factory Implementation

2014 23

  1. C++ Status at the end of 2014
  2. Top 5 Beautiful C++ std Algorithms Examples
  3. 3 Tools to Understand New Code from Visual Assist
  4. Flexible Particle System - Code Optimization
  5. Flexible particle system - Optimization through tools
  6. OpenGL 4.5
  7. Review of "D Cookbook"
  8. Flexible particle system - How to start with Software Optimization
  9. Quick case: Char Pointer vs Char Array in C++
  10. Flexible particle system - OpenGL Renderer
  11. Automated Reports with C++
  12. Flexible particle system - Updaters
  13. Talk summary: The Last Thing D Needs by Scott Meyers
  14. Vector of Objects vs Vector of Pointers
  15. Flexible particle system - Emitter and Generators
  16. Flexible particle system - The Container 2
  17. Vector of object vs Vector of pointers
  18. Flexible particle system - The Container
  19. Presentation - Native code performance on modern CPUs
  20. Flexible Particle System - Start
  21. Three Particle Effects
  22. Simple Water Simulation
  23. Asynchronous Tasks with std::future and std::async from C++11

2013 10

  1. C++ status at the end of 2013
  2. The Passionate Programmer
  3. Digging into SOIL Library for OpenGL
  4. Book: OpenGL Development Cookbook
  5. Code Kata - chop
  6. Auto keyword in C++11
  7. Book: The C++ Standard Library, 2nd
  8. #Include little toolkit
  9. Forward Declaration And a Pointer
  10. C++ Smart Pointers Gotchas

2012 5

  1. C++ at the end of 2012
  2. Select + Mouse + OpenGL
  3. Float vs Double
  4. MP option in Visual Studio
  5. FPS limit

2011 2

  1. __FUNCTION__ macro in Visual C++
  2. The First Blog Post