41554 blogs · [ { "id": "01a087e9-a50a-707d-a144-f33dff4a5a17", "title": "Building Native Plugin Systems with WebAssembly Components", "url": "https://tartanllama.xyz/posts/wasm-plugins/", "published_at": "2025-08-05T00:00:00+00:00" }, { "id": "01a087e9-a50a-707d-a144-f33dffd1dbae", "title": "std::generator: Standard Library Coroutine Support", "url": "https://tartanllama.xyz/posts/std-generator/", "published_at": "2025-02-24T00:00:00+00:00" }, { "id": "01a087e9-a50a-707d-a144-f33e00569298", "title": "C++23's Fold Algorithms", "url": "https://tartanllama.xyz/posts/fold-algorithms/", "published_at": "2023-04-13T00:00:00+00:00" }, { "id": "01a087e9-a50a-707d-a144-f33e00aa953f", "title": "C++23's Deducing this", "url": "https://tartanllama.xyz/posts/deducing-this/", "published_at": "2022-07-27T00:00:00+00:00" }, { "id": "01a087e9-a50a-707d-a144-f33e015aa98e", "title": "Abbreviated Function Templates and Constrained Auto", "url": "https://tartanllama.xyz/posts/abbreviated-function-templates/", "published_at": "2021-02-04T00:00:00+00:00" }, { "id": "01a087e9-a50a-707d-a144-f33e0180f3a6", "title": "Conditionally Trivial Special Member Functions", "url": "https://tartanllama.xyz/posts/conditionally-trivial-special-member-functions/", "published_at": "2020-11-20T00:00:00+00:00" }, { "id": "01a087e9-a50a-707d-a144-f33e01c75d46", "title": "The Performance Benefits of Final Classes", "url": "https://tartanllama.xyz/posts/performance-benefits-of-final-classes/", "published_at": "2020-03-02T00:00:00+00:00" }, { "id": "01a087e9-a50a-707d-a144-f33e029832e9", "title": "C++20's Conditionally Explicit Constructors", "url": "https://tartanllama.xyz/posts/conditionally-explicit-constructors/", "published_at": "2019-10-01T00:00:00+00:00" }, { "id": "01a087e9-a50a-707d-a144-f33e038933b7", "title": "Clear, Functional C++ Documentation with Sphinx + Breathe + Doxygen + CMake", "url": "https://tartanllama.xyz/posts/cpp-documentation/", "published_at": "2019-06-03T00:00:00+00:00" }, { "id": "01a087e9-a50a-707d-a144-f33e0419dd32", "title": "Guaranteed Copy Elision Does Not Elide Copies", "url": "https://tartanllama.xyz/posts/guaranteed-copy-elision/", "published_at": "2018-12-11T00:00:00+00:00" }, { "id": "01a087e9-a50a-707d-a144-f33e044db359", "title": "Spaceship Operator", "url": "https://tartanllama.xyz/posts/spaceship-operator/", "published_at": "2018-08-23T00:00:00+00:00" }, { "id": "01a087e9-a50a-707d-a144-f33e052da9c3", "title": "Simple Named Boolean Arguments", "url": "https://tartanllama.xyz/posts/simple-named-boolean-arguments/", "published_at": "2018-07-12T00:00:00+00:00" }, { "id": "01a087e9-a50a-707d-a144-f33e055ea9c7", "title": "Function Template Partial Ordering: Worked Examples", "url": "https://tartanllama.xyz/posts/function-template-partial-ordering/", "published_at": "2018-06-07T00:00:00+00:00" }, { "id": "01a087e9-a50a-707d-a144-f33e05785dec", "title": "std::accumulate vs. std::reduce", "url": "https://tartanllama.xyz/posts/accumulate-vs-reduce/", "published_at": "2018-05-15T00:00:00+00:00" }, { "id": "01a087e9-a50a-707d-a144-f33e059909b4", "title": "Custom Alias Analysis in LLVM", "url": "https://tartanllama.xyz/posts/llvm-alias-analysis/", "published_at": "2018-04-24T00:00:00+00:00" }, { "id": "01a087e9-a50a-707d-a144-f33e063ee75a", "title": "No More Pointers", "url": "https://tartanllama.xyz/posts/no-more-pointers/", "published_at": "2018-04-01T00:00:00+00:00" }, { "id": "01a087e9-a50a-707d-a144-f33e06a5d32d", "title": "Do Compilers Take Inline as a Hint?", "url": "https://tartanllama.xyz/posts/inline-hints/", "published_at": "2018-01-26T00:00:00+00:00" }, { "id": "01a087e9-a50a-707d-a144-f33e077eac62", "title": "Passing Overload Sets to Functions", "url": "https://tartanllama.xyz/posts/passing-overload-sets/", "published_at": "2018-01-18T00:00:00+00:00" }, { "id": "01a087e9-a50a-707d-a144-f33e07a51a51", "title": "A Call for Data on Exceptions", "url": "https://tartanllama.xyz/posts/a-call-for-data-on-exceptions/", "published_at": "2017-12-06T00:00:00+00:00" }, { "id": "01a087e9-a50a-707d-a144-f33e0890b6d2", "title": "Functional Exceptionless Error Handling with Optional and Expected", "url": "https://tartanllama.xyz/posts/optional-expected/", "published_at": "2017-11-30T00:00:00+00:00" }, { "id": "01a087e9-a50a-707d-a144-f33e089fe717", "title": "Meeting C++ 2017 Trip Report", "url": "https://tartanllama.xyz/posts/trip-reports/meeting-cpp-2017/", "published_at": "2017-11-14T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70dfbc5d24", "title": "Detection Idiom: A Stopgap for Concepts", "url": "https://tartanllama.xyz/posts/detection-idiom/", "published_at": "2017-09-14T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e02654a8", "title": "Learning C++", "url": "https://tartanllama.xyz/posts/learning-cpp/", "published_at": "2017-09-04T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e092f332", "title": "void C::C::C::A::A::A::foo(): Valid Syntax Monstrosity", "url": "https://tartanllama.xyz/posts/silly-cpp-syntax/", "published_at": "2017-08-08T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e1358083", "title": "Writing a Linux Debugger Part 10: Advanced Topics", "url": "https://tartanllama.xyz/posts/writing-a-linux-debugger/advanced-topics/", "published_at": "2017-08-01T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e1cfdce9", "title": "Writing a Linux Debugger Part 9: Handling Variables", "url": "https://tartanllama.xyz/posts/writing-a-linux-debugger/handling-variables/", "published_at": "2017-07-26T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e287a001", "title": "C++17 attributes: maybe_unused, fallthrough and nodiscard", "url": "https://tartanllama.xyz/posts/cpp17-attributes/", "published_at": "2017-07-20T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e31f8464", "title": "Metaclasses for Embedded Domain Specific Languages", "url": "https://tartanllama.xyz/posts/metaclasses-for-edsls/", "published_at": "2017-06-28T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e3359311", "title": "Writing a Linux Debugger Part 8: Stack Unwinding", "url": "https://tartanllama.xyz/posts/writing-a-linux-debugger/stack-unwinding/", "published_at": "2017-06-24T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e360bffa", "title": "Writing a Linux Debugger Part 7: Source-Level Breakpoints", "url": "https://tartanllama.xyz/posts/writing-a-linux-debugger/source-level-breakpoints/", "published_at": "2017-06-19T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e3809ca8", "title": "Accelerating your C++ on the GPU with SYCL", "url": "https://tartanllama.xyz/posts/sycl/", "published_at": "2017-05-19T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e3a63efe", "title": "Writing a Linux Debugger Part 6: Source-Level Stepping", "url": "https://tartanllama.xyz/posts/writing-a-linux-debugger/source-level-stepping/", "published_at": "2017-05-06T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e48ee5b7", "title": "ACCUConf 2017 Trip Report", "url": "https://tartanllama.xyz/posts/trip-reports/accuconf-2017/", "published_at": "2017-05-02T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e4d9d5c2", "title": "ACCUConf 2017 Workshop Day Report", "url": "https://tartanllama.xyz/posts/trip-reports/accuconf-2017-workshop-day/", "published_at": "2017-04-27T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e5357843", "title": "Writing a Linux Debugger Part 5: Source and Signals", "url": "https://tartanllama.xyz/posts/writing-a-linux-debugger/source-and-signals/", "published_at": "2017-04-24T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e562ef2c", "title": "Writing a Linux Debugger Part 4: Elves and Dwarfs", "url": "https://tartanllama.xyz/posts/writing-a-linux-debugger/elves-and-dwarves/", "published_at": "2017-04-05T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e5d37d17", "title": "Writing a Linux Debugger Part 3: Registers and Memory", "url": "https://tartanllama.xyz/posts/writing-a-linux-debugger/registers-and-memory/", "published_at": "2017-03-31T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e6460f75", "title": "Writing a Linux Debugger Part 2: Breakpoints", "url": "https://tartanllama.xyz/posts/writing-a-linux-debugger/breakpoints/", "published_at": "2017-03-24T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e68ac97e", "title": "Writing a Linux Debugger Part 1: Setup", "url": "https://tartanllama.xyz/posts/writing-a-linux-debugger/setup/", "published_at": "2017-03-21T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e6e11454", "title": "Building my First Custom Keyboard", "url": "https://tartanllama.xyz/posts/my-first-keyboard/", "published_at": "2017-02-28T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e6e7c5bf", "title": "Initialization in C++ is Bonkers", "url": "https://tartanllama.xyz/posts/cpp-initialization-is-bonkers/", "published_at": "2017-01-20T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e7493de8", "title": "Template Argument Deduction for Class Template Constructors", "url": "https://tartanllama.xyz/posts/class-template-argument-deduction/", "published_at": "2017-01-11T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e7bdc720", "title": "Lazy Generators: Template Deduction on the Left-Hand Side", "url": "https://tartanllama.xyz/posts/lazy-generators/", "published_at": "2017-01-03T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e8794c90", "title": "Simplifying Templates and #ifdefs with if constexpr", "url": "https://tartanllama.xyz/posts/if-constexpr/", "published_at": "2016-12-12T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e89cae14", "title": "Type Erasure with Unified Call Syntax", "url": "https://tartanllama.xyz/posts/type-erasure-unified-call/", "published_at": "2016-12-02T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e8a10816", "title": "Exploding Tuples with Fold Expressions", "url": "https://tartanllama.xyz/posts/exploding-tuples-fold-expressions/", "published_at": "2016-11-10T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e9025f12", "title": "Selective Default Template Arguments", "url": "https://tartanllama.xyz/posts/selective-default-template-args/", "published_at": "2016-11-01T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e9233bcd", "title": "Declaring Classes in Function Declarations", "url": "https://tartanllama.xyz/posts/declare-class-in-func/", "published_at": "2016-10-18T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70e9802e24", "title": "The Effect of a try-catch-rethrow", "url": "https://tartanllama.xyz/posts/try-catch-rethrow/", "published_at": "2016-08-09T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70ea33fa1b", "title": "integral_variable: A compile-time assignable variable", "url": "https://tartanllama.xyz/posts/integral-variable/", "published_at": "2016-07-28T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70ea5f23eb", "title": "Adding C++17 Structured Bindings Support to Your Classes", "url": "https://tartanllama.xyz/posts/structured-bindings/", "published_at": "2016-07-20T00:00:00+00:00" }, { "id": "01a087e9-a50b-734f-9042-fd70eb01a619", "title": "Stack and Heap: Commonly Misused Terms", "url": "https://tartanllama.xyz/posts/stack-vs-heap/", "published_at": "2016-07-18T00:00:00+00:00" } ] posts Claim your blog
Back to tartanllama.xyz
Blog · corpus.blog/blogs/tartanllama.xyz/posts

tartanllama.xyz

tartanllama.xyz

2025

2023

2022

2021

2020

2019

2018

2017

2016