SaaSHub helps you find the best software and product alternatives Learn more →
Top 20 C++ cpp17-library Projects
-
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
matchit.cpp
match(it): A lightweight single-header pattern-matching library for C++17 with macro-free APIs.
-
alpaca
Serialization library written in C++17 - Pack C++ structs into a compact byte-array without any macros or boilerplate code (by p-ranav)
-
-
-
text
A spicy text library for C++ that has the explicit goal of enabling the entire ecosystem to share in proper forward progress towards a bright Unicode future. (by soasis)
-
-
-
homog2d
C++ 2D geometry library, handles points, lines, polylines, planar transformations (and other primitives), using homogeneous coordinates. Provided with complete manual and samples.
-
-
-
-
BitLib
Provides a bit-vector, an optimized replacement of the infamous std::vector<:b:ool>. In addition to the bit-vector, the library also provides implementations of STL algorithms tailored for bit-vectors.
-
Actually the author is building onto my suggestion https://github.com/soasis/idk/pull/17/files which I created several years ago, but adapted a bit too fast while submitting. And yes it looks very similar to GNU nested functions, since I started tinkering with these first.
I am really not sure if all these observations mentioned in the article are 100% correct, though.
First : Code seems to be compiled with clang. On Linux with gcc the native function one is way faster than the clang one.
Second: The author does run the code on ARM64/MacOS .
At least on my ryzen CPU on Linux with gcc the "normal C code" is way faster than anything else. Not that we do not need to thing about "closure" type functionality, but one should be careful to extrapolate implementations from one compiler on one platform to the rest of the pack.
Regarding N3654 I am not sure how to benchmark it here, since C could potentially use __builtin_call_with_static_chain , but I am not sure how to write the function to use the chain for accessing the variables.
I tried to estimate N3654 it by using "tinygo" which is AFAIK using the usual Calling ABI, but it was a factor of two slower than clang. Even "go" with its very specific ABI is still much slower. I discovered this isn't representative since runtime calling costs had been totally shadowed by costs of allocations.
Even the rust example I am usually using http://www.reddit.com/r/rust/comments/2t80mw/the_man_or_boy_... is much slower than anything else, presumably because of the "Cell" needed
TLDR: This micro benchmark might be misleading
-
-
-
dynarray
A header-only library, VLA for C++ (≥C++14). Extended version of std::experimental::dynarray
-
-
-
friendly-cli
A modern C++ library for Linux that provides an easy-to-use API for user interaction through CLI
C++ cpp17-library discussion
C++ cpp17-library related posts
-
Rapidgzip – Parallel Decompression and Seeking in Gzip (Knespel, Brunst – 2023) [pdf]
-
uni-algo v1.0.0: Modern Unicode Library
-
Can I include cycfi/elements with CMake in any project or must I build up on example projects?
-
Can I include cycfi/elements with CMake in any project or must I build up on example projects?
-
A simple problem that isn't
-
Pack C++ structs into a compact bytearray without any macros or boilerplate code
-
Code review request
-
A note from our sponsor - SaaSHub
www.saashub.com | 21 Jul 2026
Index
What are some of the best open-source cpp17-library projects in C++? This list will help you:
| # | Project | Stars |
|---|---|---|
| 1 | Elements C++ GUI library | 3,713 |
| 2 | matchit.cpp | 644 |
| 3 | alpaca | 561 |
| 4 | stlkrn | 435 |
| 5 | lwlog | 350 |
| 6 | text | 336 |
| 7 | eventbus | 210 |
| 8 | monolish | 201 |
| 9 | homog2d | 138 |
| 10 | librapidarchive | 87 |
| 11 | mathiu.cpp | 81 |
| 12 | liblifthttp | 77 |
| 13 | BitLib | 75 |
| 14 | idk | 40 |
| 15 | gaenari | 29 |
| 16 | MoveDetect | 17 |
| 17 | dynarray | 15 |
| 18 | nesdev | 11 |
| 19 | static_string | 9 |
| 20 | friendly-cli | 3 |