| 23. 10. 2024 | if constexpr requires requires { requires } – foonathan.net
|
| 12. 7. 2024 | Trip Report: Summer ISO C++ Meeting in St. Louis, USA – foonathan.net
|
| 8. 5. 2024 | Trip Report: C++Now 2024 – foonathan.net
|
| 27. 3. 2024 | Trip Report: Spring ISO C++ Meeting in Tokyo, Japan – foonathan.net
|
| 8. 3. 2024 | I'm the new assistant chair of SG 9, the study group for std::ranges! – foonathan.net
|
| 20. 11. 2023 | C++ needs undefined behavior, but maybe less – foonathan.net
|
| 14. 9. 2023 | Compile-time sizes for range adaptors – foonathan.net
|
| 31. 8. 2023 | The new static constexpr std::integral_constant idiom – foonathan.net
|
| 29. 8. 2023 | Compile-time sizes for range adaptors – foonathan.net
|
| 4. 8. 2023 | Should we stop writing functions? – foonathan.net
|
| 25. 7. 2023 | Should we stop writing functions? – foonathan.net
|
| 6. 7. 2023 | Constrain your user-defined conversions – foonathan.net
|
| 10. 6. 2023 | Trip report: Summer ISO C++ Meeting in Varna, Bulgaria – foonathan.net
|
| 30. 11. 2022 | Technique: Proof types to ensure preconditions – foonathan.net
|
| 29. 9. 2022 | New integer types I'd like to see – foonathan.net
|
| 31. 8. 2022 | malloc() and free() are a bad API – foonathan.net
|
| 29. 7. 2022 | Carbon's most exciting feature is its calling convention – foonathan.net
|
| 29. 6. 2022 | Tutorial: Preparing libraries for CMake FetchContent – foonathan.net
|
| 31. 5. 2022 | Technique: Recursive variants and boxes – foonathan.net
|
| 30. 3. 2022 | `saturating_add` vs. `saturating_int` -- new function vs. new type? – foonathan.net
|
| 27. 1. 2022 | Technique: Compile Time Code Generation and Optimization – foonathan.net
|
| 25. 11. 2021 | I accidentally wrote a Turing-complete parsing library – foonathan.net
|
| 12. 10. 2021 | Tutorial: the CRTP Interface Technique – foonathan.net
|
| 29. 7. 2021 | C++20 concepts are structural: What, why, and how to change it? – foonathan.net
|
| 31. 5. 2021 | Tutorial: Interactive code snippets with Hugo and Compiler Explorer – foonathan.net
|
| 28. 4. 2021 | Implementation Challenge: Lossless, compact parse tree with iterative traversal – foonathan.net
|
| 25. 3. 2021 | Trivially copyable does not mean trivially copy constructible – foonathan.net
|
| 17. 2. 2021 | What is the unit of a text column number? – foonathan.net
|
| 27. 10. 2020 | Tricks with Default Template Arguments – foonathan.net
|
| 19. 10. 2020 | `constexpr` is a Platform – foonathan.net
|
| 2. 10. 2020 | Technique: Immediately-Invoked Function Expression for Metaprogramming – foonathan.net
|
| 22. 9. 2020 | Implementation Challenge: Replacing std::move and std::forward – foonathan.net
|
| 5. 5. 2020 | Nifty Fold Expression Tricks – foonathan.net
|
| 25. 3. 2020 | Tutorial: C++20's Iterator Sentinels – foonathan.net
|
| 17. 1. 2020 | std::polymorphic_value + Duck Typing = Type Erasure – foonathan.net
|
| 27. 11. 2019 | Naming Things: Implementer vs. User Names – foonathan.net
|
| 5. 11. 2019 | Standardese Documentation Generator: Post Mortem and My Open-Source Future – foonathan.net
|
| 26. 2. 2019 | Tutorial: When to Write Which Special Member – foonathan.net
|
| 11. 12. 2018 | Nested Optionals, Expected and Composition – foonathan.net
|
| 22. 11. 2018 | Inline Namespaces 101 – foonathan.net
|
| 17. 10. 2018 | Tutorial: Managing Compiler Warnings with CMake – foonathan.net
|
| 13. 10. 2018 | Proposals to Fix the Spaceship Operator – foonathan.net
|
| 1. 10. 2018 | Mathematics behind Comparison #5: Ordering Algorithms – foonathan.net
|
| 7. 9. 2018 | Mathematics behind Comparison #4: Three-Way Comparison – foonathan.net
|
| 19. 7. 2018 | Mathematics behind Comparison #3: Ordering Relations in C++ – foonathan.net
|
| 19. 7. 2018 | Mathematics behind Comparison #2: Ordering Relations in Math – foonathan.net
|
| 12. 7. 2018 | Let's Talk about std::optional and optional references – foonathan.net
|
| 20. 6. 2018 | Mathematics behind Comparison #1: Equality and Equivalence Relations – foonathan.net
|
| 1. 6. 2018 | A (Better) Taxonomy of Pointers – foonathan.net
|
| 17. 4. 2018 | optional in Containers Ⅱ — Not All std::vector Usages Are The Same – foonathan.net
|
| 9. 4. 2018 | Should You Put optional in a Container? – foonathan.net
|
| 26. 3. 2018 | Guidelines For Rvalue References In APIs – foonathan.net
|
| 15. 3. 2018 | Flexible issue management with Trello and IFTTT – foonathan.net
|
| 26. 1. 2018 | Guidelines for constructor and cast design – foonathan.net
|
| 21. 12. 2017 | Implementation Challenge: Revisiting the visitor pattern – foonathan.net
|
| 4. 12. 2017 | Exceptions vs expected: Let's find a compromise – foonathan.net
|
| 20. 11. 2017 | What should be part of the C++ standard library? – foonathan.net
|
| 11. 10. 2017 | Write explicit constructors - but what about assignment? – foonathan.net
|
| 14. 9. 2017 | Thoughts on destructive move – foonathan.net
|
| 24. 7. 2017 | Operator precedence is broken – foonathan.net
|
| 27. 6. 2017 | Lazy evaluation of function arguments in C++ – foonathan.net
|
| 14. 6. 2017 | Prefer nonmember, nonfriends? – foonathan.net
|
| 8. 5. 2017 | The year is 2017 - Is the preprocessor still needed in C++? – foonathan.net
|
| 20. 4. 2017 | cppast - A library to parse and work with the C++ AST – foonathan.net
|
| 22. 3. 2017 | std::string_view accepting temporaries: good idea or horrible pitfall? – foonathan.net
|
| 16. 3. 2017 | Implementation Challenge flag_set: Type-safe, hard to misuse bitmask – foonathan.net
|
| 1. 3. 2017 | Implementing a tuple_iterator – foonathan.net
|
| 8. 2. 2017 | The problem with policy-based design – foonathan.net
|
| 20. 1. 2017 | Implementing function_view is harder than you might think – foonathan.net
|
| 9. 1. 2017 | How to handle errors in constructors without exceptions? – foonathan.net
|
| 28. 12. 2016 | My take on variant – foonathan.net
|
| 21. 12. 2016 | Tutorial: Conditionally disabling non-template functions – foonathan.net
|
| 8. 12. 2016 | Fixing std::initializer_list – foonathan.net
|
| 26. 11. 2016 | standardese documentation generator version 0.3: Groups, inline documentation, template mode & more – foonathan.net
|
| 21. 11. 2016 | Memory 0.6: Composition and Joint Allocators – foonathan.net
|
| 4. 11. 2016 | Function templates - deduce template arguments or pass explicitly? – foonathan.net
|
| 26. 10. 2016 | void foo(T& out) - How to fix output parameters – foonathan.net
|
| 19. 10. 2016 | Tutorial: Emulating strong/opaque typedefs in C++ – foonathan.net
|
| 11. 10. 2016 | Type safe - Zero overhead utilities for more type safety – foonathan.net
|
| 27. 9. 2016 | Prevent precondition errors with the C++ type system – foonathan.net
|
| 16. 9. 2016 | How do I implement assertions? – foonathan.net
|
| 9. 9. 2016 | Implementation Challenge: Concepts in C++14 – foonathan.net
|
| 7. 9. 2016 | Choosing the right error handling strategy – foonathan.net
|
| 24. 8. 2016 | Move Semantics and Default Constructors -- Rule of Six? – foonathan.net
|
| 10. 8. 2016 | Standardese documentation generator version 0.2: Entity linking, index generation & more – foonathan.net
|
| 23. 7. 2016 | Move Safety -- Know What Can Be Done in the Moved-From State – foonathan.net
|
| 7. 7. 2016 | Tutorial: Easy dependency management for C++ with CMake and Git – foonathan.net
|
| 27. 6. 2016 | Flexible error handling techniques in C++ – foonathan.net
|
| 9. 6. 2016 | Standardese documentation generator version 0.1 – foonathan.net
|
| 29. 5. 2016 | You (probably) do want `final` classes? – foonathan.net
|
| 27. 5. 2016 | You (probably) don't want `final` classes – foonathan.net
|
| 21. 5. 2016 | Issue driven development – foonathan.net
|
| 6. 5. 2016 | Standardese - a (work-in-progress) nextgen Doxygen – foonathan.net
|
| 18. 4. 2016 | How I have beaten Boost.Pool #4: About abstractions and algorithms – foonathan.net
|
| 13. 4. 2016 | How I have beaten Boost.Pool #3: Branches are bad – foonathan.net
|
| 4. 4. 2016 | (Awesome?) Allocator Additions - Thoughts regarding allocator proposals – foonathan.net
|
| 29. 3. 2016 | How I have beaten Boost.Pool #2: Inlining is key – foonathan.net
|
| 18. 3. 2016 | How I have beaten Boost.Pool #1: Introduction and profiling results – foonathan.net
|
| 10. 3. 2016 | Performing arbitrary calculations with the Concept TS – foonathan.net
|
| 3. 3. 2016 | Tutorial: Easily supporting CMake install and find_package() – foonathan.net
|
| 23. 2. 2016 | Memory 0.5: Better build system, Low-level Allocators, BlockAllocator & Your Feedback is needed – foonathan.net
|
| 11. 2. 2016 | Implementation Challenge: A count leading zeroes function – foonathan.net
|
| 26. 1. 2016 | One of C++ most underrated features: Namespace aliases – foonathan.net
|
| 15. 12. 2015 | Implementation Challenge: Traits for Concepts with optional functionality – foonathan.net
|
| 30. 11. 2015 | Controlling overload resolution #4: SFINAE – foonathan.net
|
| 16. 11. 2015 | Controlling overload resolution #3: Tag dispatching – foonathan.net
|
| 2. 11. 2015 | Controlling overload resolution #2: Improving error messages for failed overload resolution – foonathan.net
|
| 16. 10. 2015 | Controlling overload resolution #1: Preventing implicit conversions – foonathan.net
|
| 5. 10. 2015 | AllocatorAwareContainer: Introduction and pitfalls of propagate_on_container_XXX defaults – foonathan.net
|
| 12. 9. 2015 | Memory 0.4: Polishing, Error handling, Storage, Traits, Documentation and more – foonathan.net |