InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now. Learn more →
Top 23 C++ Cpp17 Projects
-
modern-cpp-tutorial
📚 Modern C++ Tutorial: C++11/14/17/20 On the Fly | https://changkun.de/modern-cpp/
-
InfluxDB
InfluxDB – Built for High-Performance Time Series Workloads. InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
-
-
Minetest
Luanti (formerly Minetest) is an open source voxel game-creation platform with easy modding and game creation
-
Anticipating pushback: yes, you can disallow "pointer arithmetic" on handles, and store fingerprints in the "slots" to ensure they still contain the handle's identity to detect user-after-free, but congrats, you've implemented sparse sets, which there are dozen's of C++ implementations of with the same safety guarantees, so it's unclear what rust is bringing in that case (e.g. https://github.com/skypjack/entt/blob/master/src/entt/entity...)
-
-
-
Magic Enum C++
Static reflection for enums (to string, from string, iteration) for modern C++, work with any enum type without any macro or boilerplate code
https://github.com/Neargye/magic_enum I chose this project because, while experimenting with enums in my course management project, I realized that I was writing a lot of boilerplate code. I even tried applying generic programming by using the library to avoid meaningless pointers and experimented with templates, but in the end, this approach made the code more complicated than I had thought. In C++, enums are not very flexible by default, it’s not possible to easily iterate through them or convert them to and from strings. This often results in repetitive code and makes programs more prone to errors. With the help of modern C++17 features, however, libraries like magic_enum can make our lives much easier by providing static reflection and avoiding the need for manual stuff. Enums are also a great tool for APIs instead of introducing unnecessary layers of inheritance and polymorphism which could lead to confusion, we can use enums to keep the design simple and clear.
-
Stream
Stream - Scalable APIs for Chat, Feeds, Moderation, & Video. Stream helps developers build engaging apps that scale to millions with performant and flexible Chat, Feeds, Moderation, and Video APIs and SDKs powered by a global edge network and enterprise-grade infrastructure.
-
-
sol2
Sol3 (sol2 v3.0) - a C++ <-> Lua API wrapper with advanced features and top notch performance - is here, and it's great! Documentation:
Project mention: Pluto is a unique dialect of Lua with a focus on general-purpose programming | news.ycombinator.com | 2025-06-30Is it possible to use Pluto alongside with a binding library such as Sol2[0]? I don't mind not being able to set type hints in the bindings to use in some IDE, I can create stubs for it manually.
[0]: https://github.com/ThePhD/sol2
-
- Project mention: The Impossible Optimization, and the Metaprogramming to Achieve It | news.ycombinator.com | 2025-11-01
-
-
xray-16
Improved version of the X-Ray Engine, the game engine used in the world-famous S.T.A.L.K.E.R. game series by GSC Game World. Join OpenXRay! ;)
View the Project on GitHub
-
Regarding other ports, I've also been pretty happy with https://github.com/nodeca/argparse, which works nicely from Typescript. Looks like it hasn't been updated for a while, but it's not like there's a great deal wrong with it.
https://github.com/p-ranav/argparse is a single-file argparse for Modern C++, which means it's typically straightforward, if baffling in places and a bit annoying to step through in the debugger.
The nice thing about the argparse ports is that provided they take their job seriously, your programs will all end up with a vaguely consistent command line UX in terms of longopt syntax, and, importantly, a --help page.
-
We are using nanobind paired with hatch & scikit-build.
I suggest having a look at the pyproject and src/faebryk/core/cpp.
[0] https://github.com/wjakob/nanobind
-
Tendis
Tendis is a high-performance distributed storage system fully compatible with the Redis protocol.
-
thread-pool
BS::thread_pool: a fast, lightweight, modern, and easy-to-use C++17 / C++20 / C++23 thread pool library
-
- Project mention: HPX v1.11.0: The C++ Standards Library for Parallelism and Concurrency | news.ycombinator.com | 2025-06-29
- Project mention: Quill: Asynchronous Low Latency C++ Logging Library | news.ycombinator.com | 2025-09-14
-
Nameof C++
Nameof operator for modern C++, simply obtain the name of a variable, type, function, macro, and enum
-
-
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
C++ Cpp17 discussion
C++ Cpp17 related posts
-
Experimenting with Robin Hood Hashing
-
Smart_Store API Guide: Exporting and Importing with Confidence
-
The Impossible Optimization, and the Metaprogramming to Achieve It
-
Cubyz: Voxel sandbox game written in Zig
-
Smart_Store: A Modern C++ API for Scalable Inventory and Object Management
-
U++ – Cross-Platform App Development Framework
-
The issue of anti-cheat on Linux
- A note from our sponsor - InfluxDB www.influxdata.com | 22 Dec 2025
Index
What are some of the best open-source Cpp17 projects in C++? This list will help you:
| # | Project | Stars |
|---|---|---|
| 1 | modern-cpp-tutorial | 25,183 |
| 2 | Modern-CPP-Programming | 14,213 |
| 3 | Minetest | 12,146 |
| 4 | entt | 12,054 |
| 5 | Open Source Routing Machine (OSRM) | 7,341 |
| 6 | doctest | 6,529 |
| 7 | Magic Enum C++ | 5,861 |
| 8 | libcimbar | 5,714 |
| 9 | sol2 | 4,841 |
| 10 | cppinsights | 4,425 |
| 11 | compile-time-regular-expressions | 3,729 |
| 12 | Elements C++ GUI library | 3,620 |
| 13 | xray-16 | 3,353 |
| 14 | argparse | 3,330 |
| 15 | nanobind | 3,201 |
| 16 | Tendis | 3,119 |
| 17 | thread-pool | 2,791 |
| 18 | userver | 2,778 |
| 19 | HPX | 2,762 |
| 20 | quill | 2,710 |
| 21 | Nameof C++ | 2,238 |
| 22 | cista | 2,152 |
| 23 | tabulate | 2,122 |