<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Cpp Next</title><description>Since When: the standard and first GCC, Clang and MSVC releases for each C++ feature, and guides that answer old C++ questions for today’s standards.</description><link>https://cpp-next.com</link><language>en-us</language><managingEditor>hello@cpp-next.com (Miriam Castellanos)</managingEditor><item><title>Can a C++ destructor throw? What happens since C++11</title><link>https://cpp-next.com/blog/can-a-cpp-destructor-throw</link><guid isPermaLink="true">https://cpp-next.com/blog/can-a-cpp-destructor-throw</guid><description>Since C++11 a throwing destructor calls std::terminate. What noexcept(false) changes, why containers forbid it, and how to report failure from close().</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Language</category><category>destructors</category><category>exceptions</category><category>noexcept</category><category>raii</category><category>cpp20</category></item><item><title>Clang vs GCC: what differs for a C++ project</title><link>https://cpp-next.com/blog/clang-vs-gcc</link><guid isPermaLink="true">https://cpp-next.com/blog/clang-vs-gcc</guid><description>Clang vs GCC for C++: default standard, libstdc++ or libc++, C++26 features and warnings, each built on GCC 16.2 and Clang 23.1, then tools and which to pick.</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Tooling</category><category>clang</category><category>gcc</category><category>llvm</category><category>compilers</category><category>cpp23</category></item><item><title>C++ expression templates explained with a C++20 example</title><link>https://cpp-next.com/blog/cpp-expression-templates</link><guid isPermaLink="true">https://cpp-next.com/blog/cpp-expression-templates</guid><description>Build a C++20 expression template that runs a + b + c in one loop with no temporaries, count what it removes, and see when Eigen or ranges fit better.</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Templates</category><category>expression-templates</category><category>templates</category><category>concepts</category><category>operator-overloading</category><category>cpp20</category></item><item><title>C++ generators: co_yield and std::generator</title><link>https://cpp-next.com/blog/cpp-generators-co-yield-and-std-generator</link><guid isPermaLink="true">https://cpp-next.com/blog/cpp-generators-co-yield-and-std-generator</guid><description>Write a lazy sequence with co_yield: std::generator in C++23, a complete C++20 generator for libraries without it, and the lifetime rules that stop dangling.</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Concurrency</category><category>coroutines</category><category>generators</category><category>std-generator</category><category>cpp23</category><category>ranges</category></item><item><title>C++ int to string: to_string, format or to_chars, not itoa</title><link>https://cpp-next.com/blog/cpp-int-to-string</link><guid isPermaLink="true">https://cpp-next.com/blog/cpp-int-to-string</guid><description>Convert an int to a string in C++ with std::to_string, std::format or std::to_chars: the exact output of each, what allocates, and why itoa is not standard.</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Standard Library</category><category>std-to-string</category><category>std-format</category><category>std-to-chars</category><category>cpp17</category></item><item><title>Strings as C++ template parameters with C++20 fixed_string</title><link>https://cpp-next.com/blog/cpp-string-as-template-parameter</link><guid isPermaLink="true">https://cpp-next.com/blog/cpp-string-as-template-parameter</guid><description>A string literal can’t be the argument of a pointer template parameter. How a C++20 fixed_string type fixes that, what came before, and what C++26 adds.</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Templates</category><category>non-type-template-parameters</category><category>fixed-string</category><category>compile-time-strings</category><category>cpp20</category></item><item><title>C++ string to int: std::stoi or std::from_chars, not atoi</title><link>https://cpp-next.com/blog/cpp-string-to-int</link><guid isPermaLink="true">https://cpp-next.com/blog/cpp-string-to-int</guid><description>Convert a string to int in C++ with std::stoi or std::from_chars, reject trailing text, and see what each call, atoi included, does with bad input.</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Standard Library</category><category>std-from-chars</category><category>std-stoi</category><category>string-parsing</category><category>cpp17</category></item><item><title>C++ virtual functions: override, pure virtual and the traps</title><link>https://cpp-next.com/blog/cpp-virtual-function</link><guid isPermaLink="true">https://cpp-next.com/blog/cpp-virtual-function</guid><description>How a C++ virtual function call is resolved, why to write override and a virtual destructor, pure virtual functions, and which warnings catch the traps.</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Language</category><category>virtual-functions</category><category>polymorphism</category><category>inheritance</category><category>cpp11</category></item><item><title>C++ vs C: what differs, what breaks, which to choose</title><link>https://cpp-next.com/blog/cpp-vs-c</link><guid isPermaLink="true">https://cpp-next.com/blog/cpp-vs-c</guid><description>C++ vs C in compiled code: the valid C that four compilers reject as C++, how C23 moved toward C++, how extern “C” joins the two, and when to pick C.</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Careers</category><category>c-language</category><category>c23</category><category>extern-c</category><category>cpp23</category></item><item><title>C++20 concepts: how to write and use them</title><link>https://cpp-next.com/blog/cpp20-concepts-how-to-write-and-use-them</link><guid isPermaLink="true">https://cpp-next.com/blog/cpp20-concepts-how-to-write-and-use-them</guid><description>Constrain C++20 templates with concepts: the four ways to write a constraint, requires expressions, the standard concepts, overloading, and what is not checked.</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Standards</category><category>concepts</category><category>constraints</category><category>templates</category><category>cpp20</category><category>sfinae</category></item><item><title>C++ generic lambdas, template lambdas and function objects</title><link>https://cpp-next.com/blog/generic-lambdas-and-function-objects</link><guid isPermaLink="true">https://cpp-next.com/blog/generic-lambdas-and-function-objects</guid><description>Write generic lambdas with auto (C++14) and template parameter lists (C++20), and know when a function template or a named function object is the better tool.</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Templates</category><category>generic-lambdas</category><category>lambdas</category><category>function-objects</category><category>templates</category><category>cpp20</category></item><item><title>How to write comparators for std::sort and std::map</title><link>https://cpp-next.com/blog/how-to-write-comparators-for-std-sort-and-std-map</link><guid isPermaLink="true">https://cpp-next.com/blog/how-to-write-comparators-for-std-sort-and-std-map</guid><description>std::sort, std::set and std::map need a strict weak ordering: the three rules, what breaks when one fails, and the comparison C++20’s &lt;=&gt; writes for you.</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Standard Library</category><category>comparators</category><category>strict-weak-ordering</category><category>three-way-comparison</category><category>cpp20</category></item><item><title>C++ move semantics: what std::move and &amp;&amp; really do</title><link>https://cpp-next.com/blog/move-semantics-std-move-and-rvalue-references</link><guid isPermaLink="true">https://cpp-next.com/blog/move-semantics-std-move-and-rvalue-references</guid><description>What a move is, why std::move moves nothing, what C++17, C++20 and C++23 changed about temporaries and returns, and four move mistakes clang-tidy catches.</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Language</category><category>move-semantics</category><category>rvalue-references</category><category>std-move</category><category>perfect-forwarding</category><category>cpp20</category></item><item><title>C++ pass by value or const reference: the rule since C++17</title><link>https://cpp-next.com/blog/pass-by-value-or-const-reference</link><guid isPermaLink="true">https://cpp-next.com/blog/pass-by-value-or-const-reference</guid><description>By value, const reference, &amp;&amp; or a view? Choose each C++ parameter by what the function does with it, with the C++17 rules and a program that counts copies.</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Performance</category><category>parameter-passing</category><category>copy-elision</category><category>move-semantics</category><category>string-view</category><category>cpp20</category></item><item><title>Rule of zero: the special members C++ writes for you</title><link>https://cpp-next.com/blog/rule-of-zero-and-special-member-functions</link><guid isPermaLink="true">https://cpp-next.com/blog/rule-of-zero-and-special-member-functions</guid><description>Which special member functions C++ declares for a class, what declaring one does to the others, and when to write none, all five, or delete them.</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Language</category><category>rule-of-zero</category><category>special-member-functions</category><category>move-semantics</category><category>cpp20</category></item><item><title>std::expected in C++23: return a value or an error</title><link>https://cpp-next.com/blog/std-expected</link><guid isPermaLink="true">https://cpp-next.com/blog/std-expected</guid><description>Return a value or an error with std::expected (C++23): std::unexpected, what each accessor does in the wrong state, chaining, choosing E, and when to use it.</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Standard Library</category><category>std-expected</category><category>std-optional</category><category>error-handling</category><category>cpp23</category></item><item><title>C++ map: std::map find, insert, erase and iterate</title><link>https://cpp-next.com/blog/std-map</link><guid isPermaLink="true">https://cpp-next.com/blog/std-map</guid><description>Use a C++ map: look a key up with find, contains or at, add one with try_emplace, erase in a loop, and see what std::map does when a key is missing.</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Standard Library</category><category>std-map</category><category>std-unordered-map</category><category>std-flat-map</category><category>cpp17</category></item><item><title>std::optional in C++: how to use it and when not to</title><link>https://cpp-next.com/blog/std-optional</link><guid isPermaLink="true">https://cpp-next.com/blog/std-optional</guid><description>Create, test, read, empty and refill a std::optional, what each accessor does when it is empty, what it costs, and when std::expected fits better.</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Standard Library</category><category>std-optional</category><category>std-expected</category><category>error-handling</category><category>cpp17</category></item><item><title>std::println in C++23: print without std::cout or printf</title><link>https://cpp-next.com/blog/std-println</link><guid isPermaLink="true">https://cpp-next.com/blog/std-println</guid><description>std::println in C++23: the syntax, each std::cout and printf line translated, what a bad format string does, whether it flushes, and std::endl vs newline.</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Standard Library</category><category>std-println</category><category>std-cout</category><category>std-endl</category><category>std-format</category><category>cpp23</category></item><item><title>std::span in C++20: pass a view, not a pointer and a size</title><link>https://cpp-next.com/blog/std-span</link><guid isPermaLink="true">https://cpp-next.com/blog/std-span</guid><description>Take std::span by value: what converts to it, slicing with subspan, what s[i] out of range does on each library, and how a span dangles.</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Standard Library</category><category>std-span</category><category>parameter-passing</category><category>bounds-checking</category><category>cpp20</category></item><item><title>std::thread and std::jthread: start, join and stop a thread</title><link>https://cpp-next.com/blog/std-thread-and-jthread</link><guid isPermaLink="true">https://cpp-next.com/blog/std-thread-and-jthread</guid><description>Start a thread with std::thread or std::jthread (C++20): pass arguments with std::ref, get a result, stop it with a stop_token, and what a missed join prints.</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Concurrency</category><category>std-thread</category><category>std-jthread</category><category>stop-token</category><category>cpp20</category></item><item><title>std::variant in C++: std::visit, std::get and the traps</title><link>https://cpp-next.com/blog/std-variant</link><guid isPermaLink="true">https://cpp-next.com/blog/std-variant</guid><description>Create a std::variant, read it with std::get, get_if or std::visit, catch the missing case a conversion hides, and see what it costs and when to skip it.</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Standard Library</category><category>std-variant</category><category>std-visit</category><category>std-monostate</category><category>cpp17</category></item><item><title>When to mark a move constructor noexcept in C++</title><link>https://cpp-next.com/blog/when-to-mark-a-move-constructor-noexcept</link><guid isPermaLink="true">https://cpp-next.com/blog/when-to-mark-a-move-constructor-noexcept</guid><description>Mark moves and swap noexcept when they cannot throw, or std::vector copies where it could move. What is noexcept already, and how to check it at compile time.</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Performance</category><category>noexcept</category><category>move-semantics</category><category>std-vector</category><category>exception-safety</category><category>cpp20</category></item></channel></rss>