r/cpp • • 14d ago

C++ Show and Tell - October 2026

42 Upvotes

Use this thread to share anything you've written in C++. This includes:

  • a tool you've written
  • a game you've been working on
  • your first non-trivial C++ program

The rules of this thread are very straight forward:

  • The project must involve C++ in some way.
  • It must be something you (alone or with others) have done.
  • Please share a link, if applicable.
  • Please post images, if applicable.

If you're working on a C++ library, you can also share new releases or major updates in a dedicated post as before. The line we're drawing is between "written in C++" and "useful for C++ programmers specifically". If you're writing a C++ library or tool for C++ developers, that's something C++ programmers can use and is on-topic for a main submission. It's different if you're just using C++ to implement a generic program that isn't specifically about C++: you're free to share it here, but it wouldn't quite fit as a standalone post.

Last month's thread: https://www.reddit.com/r/cpp/comments/1w776o7/c_show_and_tell_september_2026/


r/cpp • • 14d ago

C++ Jobs - Q4 2026

37 Upvotes

Rules For Individuals

  • Don't create top-level comments - those are for employers.
  • Feel free to reply to top-level comments with on-topic questions.
  • I will create top-level comments for meta discussion and individuals looking for work.

Rules For Employers

  • If you're hiring directly, you're fine, skip this bullet point. If you're a third-party recruiter, see the extra rules below.
  • Multiple top-level comments per employer are now permitted.
    • It's still fine to consolidate multiple job openings into a single comment, or mention them in replies to your own top-level comment.
  • Don't use URL shorteners.
    • reddiquette forbids them because they're opaque to the spam filter.
  • Use the following template.
    • Use **two stars** to bold text. Use empty lines to separate sections.
  • Proofread your comment after posting it, and edit any formatting mistakes.
  • Check if your comment is visible in Incognito mode, after waiting a few minutes.
    • If not, it was probably automatically removed, which happens frequently for new accounts. Send modmail, otherwise we might not notice quickly.

Template

**Company:** [Company name; also, use the "formatting help" to make it a link to your company's website, or a specific careers page if you have one.]

**Type:** [Full time, part time, internship, contract, etc.]

**Compensation:** [This section is optional, and you can omit it without explaining why. However, including it will help your job posting stand out as there is extreme demand from candidates looking for this info. If you choose to provide this section, it must contain (a range of) actual numbers - don't waste anyone's time by saying "Compensation: Competitive."]

**Location:** [Where's your office - or if you're hiring at multiple offices, list them. If your workplace language isn't English, please specify it. It's suggested, but not required, to include the country/region; "Redmond, WA, USA" is clearer for international candidates.]

**Remote:** [Do you offer the option of working remotely? If so, do you require employees to live in certain areas or time zones?]

**Visa Sponsorship:** [Does your company sponsor visas?]

**Description:** [What does your company do, and what are you hiring C++ devs for? How much experience are you looking for, and what seniority levels are you hiring for? The more details you provide, the better.]

**Technologies:** [Required: what version of the C++ Standard do you mainly use? Optional: do you use Linux/Mac/Windows, are there languages you use in addition to C++, are there technologies like OpenGL or libraries like Boost that you need/want/like experience with, etc.]

**Contact:** [How do you want to be contacted? Email, reddit PM, telepathy, gravitational waves?]

Extra Rules For Third-Party Recruiters

Send modmail to request pre-approval on a case-by-case basis. We'll want to hear what info you can provide (in this case you can withhold client company names, and compensation info is still recommended but optional). We hope that you can connect candidates with jobs that would otherwise be unavailable, and we expect you to treat candidates well.

Previous Post


r/cpp • • 7h ago

C++ Under the sea conference

23 Upvotes

I just attended the C++ Under the Sea 2-day conference. I really enjoyed it. Watch out for talks from Hana, Matt and Kevin Henney. Really good keynotes

Matt presented his v4 version of this ZX Spectrum emulator: https://github.com/mattgodbolt/specbolt

Both Kevin Henney's and Hana's talks were new; at least I haven't seen a version of them before. These keynotes were really, really good. Hope it comes on YouTube soon.

Personally, I was a bit let down by talks from people who work for AI companies. The talks became more like a product user guide than anything to do with C++ or Programming.

Overall, an amazing conference. If you are in or around the Netherlands, you should plan to attend.


r/cpp • • 8h ago

A quick C++ standard container overview

Thumbnail meetingcpp.com
13 Upvotes

r/cpp • • 31m ago

Which API design should my framework have?

• Upvotes

right now in vexa(my game/graphics library) how you initialize window with a renderer is rather straightforward:

```cpp
#include <vexa/vexa.hpp>

using namespace vexa;

int main()
{
Engine::Init(Engine::VIDEO);

Window window = Window().setSize({1280, 720}).setRenderer({}).create();

// ...

```
YES, it uses builder pattern, not very C++-ish but i like it.
However, there are two problems with it.
first one is that usually you have builder struct building to target type so that you dont need something like `.create()` that creates classic `if (m_created) ...` problem a.k.a two phase construction. but bigger problem that caused me two want to switch to this API style is about memory management. and it is now C++'s problem.. Even rust cant handle it, because this is what you tell it to do.
so lets dont talk too much:

```cpp

Engine::Init(Engine::FONT); // calls `TTF_Init();` by SDL_TTF behind the scenes

Font font = Font::Load("...");
...
Engine::Quit();
```

A Font has destructor running on scope exit. which means before font object gets destroyed on '}' Engine::Quit() so TTF_Quit() runs. You see, when Font object gets unloaded at scope end the subsystem is not live anymore, we get a segfault. to fix this i've made Engine have a Guard struct which does Engine::Quit() automatically. But then decided that this is not i want for my API. I would priorotize explicitness for the master deinitialization.

to fix this im thinking of new API design style:
```cpp
Window window = Engine::BuildWindow().setSize({1280, 720}).setRenderer().create();
```

where BuildWindow() returns WindowBuilder not a Window, unlike the previous(so bad) choice.
for fonts, as you might already guess:

```cpp
Font font = Engine::LoadFont("...");
```

which creates a font and returns reference to it, resulting Engine to know about font count and Quit or not based on that.

code: https://github.com/monjaris/vexa


r/cpp • • 1d ago

C++ futures part 4: What if I want an immediate on-thread std::async?

Thumbnail devblogs.microsoft.com
31 Upvotes

r/cpp • • 1d ago

MSVC Build Tools Version 14.52 Release Candidate Now Available

Thumbnail devblogs.microsoft.com
63 Upvotes

Hi, one of the MSVC dev leads here.

The 14.52 MSVC Release Candidate is now available. If you are on the Visual Studio Insiders Channel and upgrade, you'll see that the default MSVC toolset has upgraded from 14.51 to 14.52. The blog post covers the features & fixes the team has landed in that timeframe.

C++23 is ready for production use, and available with the /std:c++23 compiler option. See the blog for more details.

We'll resume our monthly MSVC Preview (version 14.53) blog post series next month.


r/cpp • • 2d ago

Barry's C++ Blog - Generating Operator Functions

Thumbnail brevzin.github.io
69 Upvotes

r/cpp • • 2d ago

The Double Headed Stack Allocator – The blog at the bottom of the sea

Thumbnail blog.demofox.org
40 Upvotes

r/cpp • • 3d ago

"C++23 - The Complete Guide" now as Paperback

120 Upvotes

C++23 - The Complete Guide is now also available as paperback version.
You can order it, for example, at Amazon.

The book explains on 500 pages all new features of C++23 (covering both the core language and the standard library) with motivation, conceptional introduction of all aspects, and many examples of how to use the new features in practice.

The book is part of my "The Complete Guide" Series, trying to explain a programming language that is now so overwhelming that as a programmer it is hard to keep track of all its new features, benefits, and pitfalls.

Enjoy

Nico


r/cpp • • 2d ago

A Cross Toolkit Animation Timeline Control

Thumbnail youtube.com
0 Upvotes

New video from Utah C++ Programmers.


r/cpp • • 2d ago

A C++ Trick Question - Blog Post

Thumbnail greenlightning.eu
15 Upvotes

r/cpp • • 1d ago

Please consider bundling C++ STL with your application

0 Upvotes

Systems targeted by C++ toolchains vary a lot even though C++ constantly changes. If you rely on operating system STL for your application code, following things may happen:

  • If your platform A supports C++20 and your platform B supports C++14 and your platform C supports C++11, you will either force C++ <= 11 to all your libraries, or use macro magic etc, to use one set of features each platform.

  • If you operate in a specialized domain, such as real-time systems, you may need a standard library built with specific configuration options, such as disabling exceptions or RTTI. Relying on the system-provided STL leaves you dependent on how it was built, which may not meet your requirements

If you build your STL of choice you solve all these issues:

  • You can use the highest C++ standard possible, you no longer have to think about each operating system state extensively.
  • You can configure your STL to match your needs

In nearly all modern system languages you build standard library yourself, I don't see any reason why C++ developers shouldn't consider this.


r/cpp • • 3d ago

C++ futures part 2: The mental model for std::promise, std::packaged_task

Thumbnail devblogs.microsoft.com
28 Upvotes

r/cpp • • 4d ago

C++ futures part 1: The mental model

Thumbnail devblogs.microsoft.com
46 Upvotes

r/cpp • • 5d ago

FastNoise2: noise generation using SIMD and C++17

Thumbnail github.com
51 Upvotes

r/cpp • • 5d ago

New C++ Conference Videos Released This Month - October 2026 (Updated To Include Videos Released 2026-10-05- 2026-10-11)

9 Upvotes

C++Now

2026-10-05 - 2026-10-11

2026-09-28 - 2026-10-04

ACCU

2026-10-05 - 2026-10-11

2026-09-28 - 2026-10-04

ADC

2026-10-05 - 2026-10-11

2026-09-28 - 2026-10-04


r/cpp • • 5d ago

cppreference-doc for Qt Creator

22 Upvotes

Release cppreference C++ v2025.12.01 · cristianadam/cppreference-doc

This is useful for the Qt Creator users that use it for C++ development.


r/cpp • • 4d ago

I tested whether a coding agent would use C++23 ranges without being told

0 Upvotes

Blog post: https://kemalbektas.dev/ai-modern-features/

I tested whether coding agents would actually use C++23 ranges without being told.

They mostly didn’t. What changed things much more than the surrounding codebase was a short AGENTS.md asking for modern C++.


r/cpp • • 5d ago

ACCU Overload Journal 195 - October 2026

Thumbnail accu.org
16 Upvotes

r/cpp • • 6d ago

wxWidgets 3.2.12 and 3.3.4 Released

Thumbnail wxwidgets.org
67 Upvotes

r/cpp • • 7d ago

Opting in, and back out again

Thumbnail dryperspective.github.io
39 Upvotes

r/cpp • • 7d ago

std::variant, operator== and pattern matching

31 Upvotes

I was thinking, wouldn't adding equality comparison support between std::variant and one of its unambiguous alternatives help simplify potential pattern matching designs?

For example, imagine something like this (hypothetical syntax):

std::variant<int, std::string> v = 42;

match (v) {
    case 42      => handle_int();
    case "hello" => handle_string();
    case _       => handle_other();
}

The idea would be to take advantage of something C++ already has: operator==. At the end of the day, matching is fundamentally a comparison, so why not build on the existing equality semantics?

For std::optional, we can get this with its existing comparison operators and the most trivial pattern matching compiler support:

std::optional<int> o = 42;

match (o) {
    case 42           => handle_value();
    case std::nullopt => handle_empty();
    case _            => handle_other();
}

// Which would translate to:

if (o == 42)
    handle_value();
else if (o == nullopt)
    handle_empty();
else
    handle_other();

And if we had something like std::match_projection<Subject, Pattern>, we could also extract the actual matched value instead of having to manually call std::get, dereference an optional, etc.

Basically, after a successful comparison, match_projection would tell the compiler what to extract based on the subject and pattern types and we could optionally bind that value using something like a as <declaration> syntax.

For example:

std::optional<int> o = 42;
std::optional<int> other_opt = 42;

match (o) {
    // No binding needed
    case 42 => foo();

    // match_projection<optional<int>, int> -> int&
    case 42 as int& x => use(x);

    // match_projection<optional<int>, nullopt_t> -> void
    case std::nullopt => handle_empty();

    // match_projection<optional<int>, optional<int>>
    // -> optional<int>&
    case other_opt as auto& x => use(x);
}

The same would apply to std::variant, assuming we also extend its operator== to support comparisons with individual alternatives:

match (v) {
    case 42 as int& x => use(x);
    case "hello" as std::string& s => use(s);

    // Only need to define operator== for this helper for this to work
    case indexed<0> => handle_any_int();

    // Or under this form for the sake of disambiguation
    case indexed<0>(10) => handle_ten();

    // Also provide match_projection<indexed<0>> to enable binding
    case indexed<0>(20) as int& x => use(x);

    case _ => handle_other();
}

Here, indexed<> would just be a hypothetical helper for explicitly selecting which alternative to compare against. It would only need an appropriate operator== to work with matching, and a corresponding match_projection specialization if we also wanted to extract the alternative.

This way, the matching itself wouldn't need to know anything about variant, optional or even user-defined types. It would just use their equality operators, while match_projection would tell it what to extract when we actually want to bind something, which is just syntactic sugar.

I'm curious what you think about this approach. It feels like we could get quite a bit of useful pattern matching functionality without introducing too much new language machinery or convoluted new language traits and APIs.

Also do you think std::variant being equality comparable with instances of its alternatives would be an useful addition on its own?

std::variant<int, std::string> v = 42;

if (v == "not my string") ...

// Which is simpler than
if (std::holds_alternative<std::string>(v) && std::get<std::string>(v) == "not my string") ...

Syntax seems nice on its own...


r/cpp • • 9d ago

CppCon Profiles for simplicity and guarantees - Bjarne Stroustrup - CppCon 2026

Thumbnail youtu.be
50 Upvotes

r/cpp • • 9d ago

How to Fix autoconf-style Configuration Probing

Thumbnail build2.org
13 Upvotes