Top Related Projects
A modern formatting library
JSON for Modern C++
Fast C++ logging library.
A modern, C++-native, test framework for unit-tests, TDD and BDD - using C++14, C++17 and later (C++11 support is in v2.x branch, and C++03 on the Catch1.x branch)
A fast JSON parser/generator for C++ with both SAX/DOM style API
Static reflection for enums (to string, from string, iteration) for modern C++, work with any enum type without any macro or boilerplate code
Quick Overview
p-ranav/awesome-hpp is a curated list of header-only C++ libraries. It provides a comprehensive collection of high-quality, single-header libraries that can be easily integrated into C++ projects without the need for complex build systems or external dependencies.
Pros
- Easy integration: Single-header libraries can be quickly added to projects with minimal setup
- Wide range of categories: Covers various domains including algorithms, containers, networking, and more
- Actively maintained: Regularly updated with new libraries and contributions from the community
- Reduces project complexity: Minimizes external dependencies and simplifies build processes
Cons
- Limited to header-only libraries: Excludes potentially useful multi-file libraries
- May increase compile times: Including large header-only libraries can slow down compilation
- Potential for code bloat: Inlining and template instantiation may increase binary size
- Lack of versioning: Some libraries may not have clear version information or changelogs
Code Examples
This is not a code library itself, but a curated list of libraries. Therefore, code examples are not applicable.
Getting Started
As this is a curated list and not a code library, there's no specific getting started instructions. However, to use the list:
- Visit the GitHub repository: https://github.com/p-ranav/awesome-hpp
- Browse the categories to find libraries that suit your needs
- Click on the library links to access their respective repositories
- Follow the installation instructions provided by each individual library
Competitor Comparisons
A modern formatting library
Pros of fmt
- Actively maintained and widely used library for string formatting
- Provides a safe, fast, and extensible alternative to printf and iostreams
- Supports a wide range of formatting options and custom types
Cons of fmt
- Requires including an external library, increasing project dependencies
- May have a slight performance overhead compared to raw string manipulation
- Learning curve for developers unfamiliar with the fmt syntax
Code Comparison
fmt:
#include <fmt/core.h>
std::string name = "Alice";
int age = 30;
fmt::print("Hello, {}! You are {} years old.", name, age);
awesome-hpp (using std::format):
#include <format>
#include <iostream>
std::string name = "Alice";
int age = 30;
std::cout << std::format("Hello, {}! You are {} years old.", name, age);
Summary
fmt is a comprehensive formatting library, while awesome-hpp is a curated list of header-only C++ libraries. fmt offers more features and active development, but awesome-hpp provides a collection of lightweight alternatives. The choice depends on project requirements and preferences for external dependencies versus header-only solutions.
JSON for Modern C++
Pros of json
- Comprehensive JSON manipulation library with extensive features
- Well-documented and widely adopted in the C++ community
- Actively maintained with regular updates and improvements
Cons of json
- Focused solely on JSON, while awesome-hpp covers multiple header-only libraries
- Larger codebase and potential overhead for simple use cases
- May require more setup and integration compared to lightweight alternatives
Code Comparison
json:
#include <nlohmann/json.hpp>
using json = nlohmann::json;
json j = {
{"name", "John"},
{"age", 30},
{"city", "New York"}
};
std::cout << j.dump(2) << std::endl;
awesome-hpp (using nlohmann/json as an example):
#include <nlohmann/json.hpp>
using json = nlohmann::json;
// Same code as above
Note: awesome-hpp is a curated list of header-only libraries, including json, so the code usage would be identical for this specific example. The main difference is that awesome-hpp provides a collection of various header-only libraries, while json focuses exclusively on JSON manipulation.
Fast C++ logging library.
Pros of spdlog
- Focused, feature-rich logging library with high performance
- Supports various log targets (console, file, syslog, etc.)
- Actively maintained with frequent updates and improvements
Cons of spdlog
- Limited to logging functionality only
- Steeper learning curve for advanced features
- Larger codebase compared to single-header libraries
Code Comparison
spdlog:
#include "spdlog/spdlog.h"
int main() {
spdlog::info("Welcome to spdlog!");
spdlog::error("Some error message with arg: {}", 1);
}
awesome-hpp:
#include "fmt/format.h"
int main() {
fmt::print("Welcome to fmt!\n");
fmt::print(stderr, "Some error message with arg: {}\n", 1);
}
Summary
spdlog is a comprehensive logging library with advanced features and high performance, while awesome-hpp is a curated list of single-header C++ libraries, including fmt for formatting. spdlog offers more logging-specific functionality but has a larger footprint, whereas awesome-hpp provides a collection of lightweight, header-only libraries for various purposes. The choice between them depends on whether you need a dedicated logging solution or prefer a more modular approach with single-header libraries.
A modern, C++-native, test framework for unit-tests, TDD and BDD - using C++14, C++17 and later (C++11 support is in v2.x branch, and C++03 on the Catch1.x branch)
Pros of Catch2
- Comprehensive testing framework with built-in assertion macros and test organization
- Extensive documentation and community support
- Single header file implementation for easy integration
Cons of Catch2
- Larger codebase and potentially slower compilation times
- Steeper learning curve for advanced features
- May be overkill for simple projects or small libraries
Code Comparison
Catch2:
#define CATCH_CONFIG_MAIN
#include <catch2/catch.hpp>
TEST_CASE("Example test") {
REQUIRE(1 + 1 == 2);
}
awesome-hpp:
#include <cassert>
int main() {
assert(1 + 1 == 2);
return 0;
}
Summary
Catch2 is a full-featured testing framework, while awesome-hpp is a curated list of header-only C++ libraries. Catch2 provides a robust testing environment with built-in assertions and test organization, making it suitable for large-scale projects. However, it may be excessive for smaller projects or libraries.
awesome-hpp offers a collection of lightweight, header-only libraries that can be easily integrated into projects. While it doesn't provide a testing framework itself, it includes various utility libraries that can be useful for different aspects of C++ development.
Choose Catch2 for comprehensive testing needs in larger projects, and consider libraries from awesome-hpp for specific functionality in a header-only format.
A fast JSON parser/generator for C++ with both SAX/DOM style API
Pros of rapidjson
- Highly optimized for performance, making it one of the fastest JSON parsers available
- Supports both SAX and DOM parsing styles, offering flexibility for different use cases
- Provides extensive documentation and examples for easy integration
Cons of rapidjson
- Focused solely on JSON parsing, while awesome-hpp covers a broader range of C++ utilities
- Larger codebase and more complex API compared to some lightweight alternatives
- May be overkill for simple JSON parsing needs in smaller projects
Code Comparison
rapidjson:
Document d;
d.Parse(json);
Value& s = d["stars"];
s.SetInt(s.GetInt() + 1);
awesome-hpp (using nlohmann/json as an example):
auto j = json::parse(json_string);
j["stars"] = j["stars"].get<int>() + 1;
Summary
rapidjson is a specialized JSON library focused on high performance, while awesome-hpp is a curated list of header-only C++ libraries covering various functionalities. rapidjson offers more JSON-specific features and optimizations, but awesome-hpp provides a broader range of utilities for different C++ development needs. The choice between them depends on the specific requirements of your project and whether you need a dedicated JSON parser or a collection of versatile C++ tools.
Static reflection for enums (to string, from string, iteration) for modern C++, work with any enum type without any macro or boilerplate code
Pros of magic_enum
- Focuses specifically on enum reflection and manipulation
- Provides a more comprehensive set of enum-related utilities
- Supports C++17 and later, offering modern C++ features
Cons of magic_enum
- Limited to enum-related functionality
- May have a steeper learning curve for beginners
- Requires C++17 or later, which might not be suitable for all projects
Code Comparison
magic_enum:
enum class Color { Red, Green, Blue };
auto color_name = magic_enum::enum_name(Color::Red);
auto color_value = magic_enum::enum_cast<Color>("Green");
awesome-hpp:
#include <iostream>
#include "fmt/format.h"
int main() {
fmt::print("Hello, {}!", "world");
return 0;
}
Summary
magic_enum is a specialized library for enum reflection and manipulation, offering a comprehensive set of tools for working with enums in modern C++. awesome-hpp, on the other hand, is a collection of various header-only C++ libraries covering a wide range of functionalities. While magic_enum excels in enum-related tasks, awesome-hpp provides a broader set of utilities for different purposes. The choice between the two depends on the specific needs of your project and the desired level of specialization.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Awesome header-only C++ libraries
Table of Contents
- Argument Parsers
- Audio
- Benchmarking
- Communication
- Compression
- Concurrency
- Cryptography and Security
- Databases
- Data Formats
- Data Mining, Machine Learning, and Deep Learning
- Data Formatting and Presentation
- Data Querying
- Data Structures and Algorithms
- Debugging
- Deep Learning
- Dependency Injection
- Event Handling Mechanisms
- File System
- Functional Programming
- Geometry, Graphics Processing, and Game Development
- GPU
- Graph
- GUI
- High-performance Computing
- HTTP and the Web
- Image Processing
- Language Bindings
- Language Development
- Logging
- Mathematics
- Memory Management
- Mocking
- Networking
- Optimization
- Parsing
- Parsing Expression Grammars
- Portability Definitions
- Reflection
- Regular Expression
- Robotics
- Serialization
- SIMD
- Standard/Support Libraries
- State Machine
- Statistics
- String Utilities
- Templating Engines
- Terminal Utilities
- Testing Frameworks
- Unicode
- Units
- Validation
- Web Frameworks
Argument Parsers
Library | Stars | Description | License |
---|---|---|---|
Argh! | Argh! A minimalist argument handler. | ||
argparse | Argument Parser for Modern C++. | ||
args | A simple header-only C++ argument parser library. | ||
cmd_line_parser | Command line parser for C++17. | ||
CLI11 | CLI11 is a command line parser for C++11 and beyond. | ||
clipp | Powerful & Expressive Argument Parsing for Modern C++. | ||
cxxopts | Lightweight C++ GNU style option parser library. | ||
fire-hpp | Create fully functional CLIs using function signatures. | ||
flags | Simple, extensible, header-only C++17 argument parser. | ||
structopt | Parse command line arguments by defining a struct. |
Audio
Library | Stars | Description | License |
---|---|---|---|
miniaudio | Audio playback and capture library written in C, in a single source file. | ||
minimp3 | Minimalistic MP3 decoder single header library. |
Benchmarking
Library | Stars | Description | License |
---|---|---|---|
criterion | Microbenchmarking for Modern C++. | ||
nanobench | Simple, fast, accurate microbenchmarking for C++11. | ||
picobench | A small microbenchmarking library for C++11. |
Communication
Library | Stars | Description | License |
---|---|---|---|
comms | Implement binary communication protocols in >=C++11. |
Compression
Library | Stars | Description | License |
---|---|---|---|
Gzip | Gzip header-only C++ library. | ||
interpolative_coding | Binary Interpolative Coding algorithm. | ||
zstr | A C++ header-only ZLib wrapper. |
Concurrency
Library | Stars | Description | License |
---|---|---|---|
cs_libguarded | Multithreaded programming. | ||
taskflow | Modern C++ Parallel Task Programming. | ||
task_system | Better Code: Concurrency - Sean Parent. | ||
transwarp | A header-only C++ library for task concurrency. | ||
taskpool | Modern C++ taskpool. | ||
thread-pool | Modern C++20 thread-pool. |
Cryptography and Security
Library | Stars | Description | License |
---|---|---|---|
cppcodec | Encode/decode base64, base64url, base32, etc. | ||
digestpp | C++11 header-only message digest library. | ||
PicoSHA2 | Header-file-only, SHA256 hash generator in C++. | ||
plusaes | Header only C++ AES cipher library. | ||
stduuid | A C++17 cross-platform implementation for UUIDs. |
Databases
Library | Stars | Description | License |
---|---|---|---|
OTL | Oracle, ODBC and DB2-CLI Template Library. | OpenBSD |
Data Formats
Library | Stars | Description | License |
---|---|---|---|
bencode | C++20 bencode library. | ||
Boost.JSON | JSON parsing, serialization, inspection and modification. | ||
cpptoml | Header-only library for parsing TOML. | ||
csv2 | Fast CSV parser and writer for Modern C++. | ||
CSV Parser | Reading, writing, and analyzing CSV files. | ||
daw_json_link | Static JSON parsing in C++. | ||
Fast C++ CSV Parser | Fast library for reading CSV files. | ||
FlatJSON | Extremely fast just one allocation and zero copy JSON parser. | ||
Glaze | Extremely fast, in memory, JSON and interface library for modern C++. | ||
inih | This is a header only C++ version of inih. | ||
nlohmann/json | JSON for Modern C++. | ||
json_struct | High performance, single header only to serialize and deserialize JSON to C++ structs. | ||
jsoncons | Construct JSON and JSON-like data formats. | ||
minicsv | Bare minimal CSV stream based on C++ file streams. | ||
picojson | a header-file-only, JSON parser serializer in C++. | ||
pugixml | A C++ XML processing library with a DOM-like interface and XPath 1.0 support. | ||
rapidcsv | C++ CSV parser library. | ||
rapidjson | A fast JSON parser/generator for C++. | ||
rapidxml | RapidXML fork; XML namespacing, per-element parsing, etc. | ||
simdjson | Parsing gigabytes of JSON per second. | ||
simpleini | Read and write INI-style configuration files. | ||
taocpp JSON | C++ header-only JSON library. | ||
toml11 | TOML for Modern C++. | ||
tomlplusplus | TOML config file parser and serializer for >=C++17. | ||
tortellini | A really stupid INI file format for C++11. | ||
valijson | JSON Schema validation. | ||
xml2json | A header-only C++ library converts XML to JSON. |
Data Mining, Machine Learning, and Deep Learning
Library | Stars | Description | License |
---|---|---|---|
dlib | A toolkit for real-world machine learning and data analysis. | ||
frugally deep | Use Keras models in C++. | ||
gaenari | Incremental decision tree in C++17. | ||
hnswlib | Fast approximate nearest neighbors. | ||
MiniDNN | A header-only C++ library for deep neural networks. | ||
mlpack | mlpack: a fast, header-only C++ machine learning library. | ||
nanoflann | Nearest Neighbor (NN) search with KD-trees. | ||
tiny-dnn | Dependency-free deep learning framework in C++14. |
Data Formatting and Presentation
Library | Stars | Description | License |
---|---|---|---|
asap | Creating, displaying, iterating and manipulating dates. | ||
cxx prettyprint | Pretty-printing of any container in C++(0x). | ||
emio | A safe and fast high-level and low-level character input/output C++20 library. | ||
fmt | A modern formatting library. | ||
pprint | Pretty Printer for Modern C++. | ||
strf | A fast formatting library for C++14. | ||
tabulate | Table Maker for Modern C++. |
Data Querying
Library | Stars | Description | License |
---|---|---|---|
boolinq | Simplest C++ header-only LINQ template library. |
Data Structures and Algorithms
Library | Stars | Description | License |
---|---|---|---|
BitMagic | Compressed bit-vectors, logical operations, memory compact containers. | ||
concurrent queue | Fast multi-producer, multi-consumer lock-free concurrent queue. | ||
dynamic bitset | The C++17 header-only dynamic bitset. | ||
frozen | Constexpr alternative to gperf for C++14 users. | ||
hopscotch map | Fast hash map and hash set using hopscotch hashing. | ||
immer | Postmodern immutable and persistent data structures. | ||
MPMCQueue | A bounded multi-producer multi-consumer concurrent queue. | ||
outcome | Lightweight outcome | ||
parallel hashmap | Very fast and memory-friendly hashmap and btree containers. | ||
PGM-index | Blazing fast queries and updates over billions of items using orders of magnitude less memory than other containers. | ||
robin-hood hashing | Fast & memory efficient hashtable based on robin hood hashing. | ||
robin-map | Fast hash map and hash set using robin hood hashing. | ||
sfl-library | Small vector. Small flat map/multimap/set/multiset (ordered and unordered). C++11. | ||
small | Implementations of the main STL containers optimized for the case when they are small. | ||
tries | Fast and highly customisable C++20 trie implementation. |
Debugging
Library | Stars | Description | License |
---|---|---|---|
backward-cpp | A beautiful stack trace pretty printer for C++. |
Deep Learning
Library | Stars | Description | License |
---|---|---|---|
ceras | A deep learning engine in C++20. |
Dependency Injection
Library | Stars | Description | License |
---|---|---|---|
inversify-cpp | C++17 inversion of control and dependency injection container library. |
Event Handling Mechanisms
Library | Stars | Description | License |
---|---|---|---|
eventbus | Mediator pattern event bus for C++. | ||
eventpp | Event Dispatcher and callback list for C++. | ||
periodic-function | Callbacks at a specified time interval. |
File System
Library | Stars | Description | License |
---|---|---|---|
simplebinstream | C++ Simplistic Binary Stream. | ||
filesystem | Cross-platform implementation of std::filesystem for C++11/14/17. | ||
glob | Glob for C++17. | ||
llfio | P1031 low-Level file i/o and filesystem library. | ||
mio | Cross-platform C++11 memory mapped file IO. | ||
mm_file | Memory-mapped files for C++. | ||
tinydir | Lightweight, portable C directory and file reader. |
Functional Programming
Library | Stars | Description | License |
---|---|---|---|
FunctionalPlus | Functional Programming Library for C++. | ||
immer | Persistent functional data structures in C++. | ||
lager | Redux-like unidirectional data-flow for C++. | ||
schmutz | Easy Guile Scheme C++ bindings. | ||
zug | Transducers (from Clojure) in C++. |
Geometry, Graphics Processing, and Game Development
Library | Stars | Description | License |
---|---|---|---|
arcball_camera | Immediate-mode camera for your graphics demos. | ||
Brutus | Marching cubes implementation. | ||
cinolib | Process polygonal and polyhedral meshes. | ||
cr | A Simple C Hot Reload Header-only Library. | ||
CxxSwizzle | Modern C++ swizzling header-only library. | ||
earcut.hpp | Fast Polygon triangulation. | ||
entt | Entity component system (ECS) and much more. | ||
glm | OpenGL Mathematics (GLM). | ||
librg | ð Making multi-player gamedev simpler since 2017. | ||
micro-gl | ð¾ CPU Vector Graphics Engine (No FPU or std-lib needed). | ||
nanort | Modern ray tracing kernel. | ||
px | Thread Scheduling, Rendering, and so on. | ||
Simple OpenGL Loader | Extensible, cross-platform OpenGL loader. | ||
Sokol | Cross-platform libraries for C and C++. | ||
stb | Single-file public domain libraries. | ||
Swarmz | Swarming (flocking) library for real-time applications. | ||
tiny-differentiable-simulator | Tiny Differentiable Simulator is a header-only C++ physics library with zero dependencies. | ||
tinygltf | C++11 tiny glTF 2.0 library. | ||
tweeny | A modern C++ tweening library. | ||
Vookoo | Take the pain out of Vulkan. | ||
voxelizer | Header only mesh voxelizer in c99. |
GPU
Library | Stars | Description | License |
---|---|---|---|
thrust | Parallel programming library. | ||
vuda | Vulkan-based library that provides a CUDA Runtime API interface for writing GPU-accelerated applications. | ||
muda | Elegant kernel launch, debug-friendly memory accessor, automatic CudaGraph generation & updating for CUDA. |
Graph
Library | Stars | Description | License |
---|---|---|---|
CXXGraph | Graph Representation and Algorithms Library >= C++17 | ||
Graaf | A general-purpose lightweight C++20 graph library. |
GUI
Library | Stars | Description | License |
---|---|---|---|
Centurion | A modern C++17/20 wrapper library for SDL2. | ||
GuiLite | The smallest header-only GUI library(5 KLOC) for all platforms. | ||
Nuklear | Immediate mode cross-platform GUI library. | ||
WinLamb | C++11 native Win32 GUI library. |
High-performance Computing
Library | Stars | Description | License |
---|---|---|---|
MPL | A C++11 message passing library based on the Message Passing Interface standard. |
HTTP and the Web
Library | Stars | Description | License |
---|---|---|---|
cinatra | Modern (c++17), Cross-platform Http Framework. | ||
cpp-httplib | A C++11 Cross platform HTTP/HTTPS library. | ||
jwt-cpp | Create and validate JSON web tokens. | ||
RESTinio | Asynchronous HTTP/WebSocket server C++14 library | ||
cuehttp | Modern c++ middleware framework for http(http/https)/websocket(ws/wss). | ||
libfv | libfv is C++20 header-only network library, support TCP/SSL/Http/websocket server and client | ||
NetIF | Cross-platform network interface addresses without name lookups in C++14. |
Image Processing
Library | Stars | Description | License |
---|---|---|---|
BitmapPlusPlus | Simple and Fast header only Bitmap (BMP) library. | ||
CImg | Cool Image, one file: full featured image processing. | ||
color-util | Colors, Color space converters for RGB, HSL, XYZ, Lab, etc. | ||
color | Color manipulation/conversion for different types and formats. | ||
nanopm | NanoPM, single header only PatchMatch. |
Language Bindings
Library | Stars | Description | License |
---|---|---|---|
jni.hpp | A modern, type-safe, C++14 wrapper for JNI. | ||
pybind11 | Seamless operability between C++11 and Python. | ||
Selene | Simple C++11 friendly bindings to Lua. | ||
Sol | Sol3 (sol2 v3.0) - a C++ <-> Lua API wrapper with advanced features and top notch performance. | ||
v8pp | Bind C++ functions and classes into V8 JavaScript engine. |
Language Development
Library | Stars | Description | License |
---|---|---|---|
Command Interpreter | Add a command interpreter (eg., REPL) to any C++ program. |
Logging
Library | Stars | Description | License |
---|---|---|---|
easyloggingpp | Single header C++ logging library. | ||
plog | Portable, simple and extensible C++ logging library. | ||
spdlog | Fast C++ logging library. |
Mathematics
Library | Stars | Description | License |
---|---|---|---|
amgcl | Solve large sparse linear systems with algebraic multigrid method. | ||
dj_fft | FFT library. | ||
eigen | Template library for linear algebra. | ||
exprtk | C++ Mathematical Expression Toolkit. | ||
fpm | Fixed-point math library. | ||
kfr | Fast DSP framework, FFT, Sample Rate Conversion, etc. | ||
libmorton | Methods to efficiently encode/decode Morton codes in/from 2D/3D coordinates. | ||
linalg | Short vector math library for C++. | ||
matplotlib-cpp | C++ plotting library built on the popular matplotlib. | ||
matrix | A 2D matrix lib in C++20. | ||
NumCpp | C++ implementation of the Python Numpy library. | ||
random | Random for modern C++ with convenient API. | ||
spectra | A header-only C++ library for large scale eigenvalue problems. | ||
universal | Universal Number Arithmetic. |
Memory Management
Library | Stars | Description | License |
---|---|---|---|
ugc | Incremental garbage collector. |
Mocking
Library | Stars | Description | License |
---|---|---|---|
FakeIt | C++ mocking made easy. | ||
trompeloeil | C++14 mocking framework. |
Networking
Library | Stars | Description | License |
---|---|---|---|
asio | Asio C++ Library. | ||
asio-grpc | Asynchronous gRPC with Asio/unified executors. | ||
brynet | Cross-platform C++ TCP network library. | ||
cppzmq | Header-only C++ binding for libzmq. | ||
nygma | Network packet processing and indexing. | ||
uvw | libuv wrapper in modern C++. |
Optimization
Library | Stars | Description | License |
---|---|---|---|
ensmallen | C++ library for numerical optimization. |
Parsing
Library | Stars | Description | License |
---|---|---|---|
lexertl14 | The Modular Lexical Analyser Generator. | ||
Matcheroni & Parseroni | C++20 libraries for doing pattern matching using Parsing Expression Grammars | ||
parsertl14 | The Modular Parser Generator. |
Parsing Expression Grammars
Library | Stars | Description | License |
---|---|---|---|
cpp-peglib | PEG (Parsing Expression Grammars) library. | ||
lug | A C++17 embedded domain specific language for expressing parsers as extended PEG. | ||
PEGTL | Parsing Expression Grammar Template Library. |
Portability Definitions
Library | Stars | Description | License |
---|---|---|---|
hedley | Move #ifdefs out of your code. |
Reflection
Library | Stars | Description | License |
---|---|---|---|
better-enums | C++ compile-time enum to string, iteration. | ||
magic_enum | Static reflection for enums. | ||
meta | Macro-free runtime reflection system. | ||
nameof | Nameof operator for modern C++. | ||
refl-cpp | Compile-time reflection library. | ||
visit_struct | A miniature library for struct-field reflection. |
Regular Expression
Library | Stars | Description | License |
---|---|---|---|
compile-time regular expressions | A Compile time regular expression matcher. | ||
SRELL | A ECMAScript (JavaScript) compatible regular expression engine. |
Robotics
Library | Stars | Description | License |
---|---|---|---|
manif | Small library for Lie theory. |
Serialization
Library | Stars | Description | License |
---|---|---|---|
alpaca | Serialization library written in C++17. | ||
cereal | A C++11 library for serialization. | ||
essentials | Transparent serialization/deserialization. | ||
fuser | Automatic (de)serialization of C++ types to/from JSON. | ||
YAS | A C++11 (de)serialization library with support for binary/text/json archives. | ||
cista | simple, high-performance, zero-copy C++ serialization & reflection library. |
SIMD
Library | Stars | Description | License |
---|---|---|---|
libsimdpp | Low-level SIMD library. | ||
simde | Implementations of SIMD instruction sets. | ||
tsimd | Fundamental C++ SIMD types for Intel CPUs. |
Standard/Support Libraries
Library | Stars | Description | License |
---|---|---|---|
bitflags | Easily managing set of flags. | ||
cpp-typelist | Modern typelist for C++20 | ||
expected | C++11/14/17 std::expected. | ||
expected-lite | Expected objects in C++11 and later. | ||
flux | A C++20 library for sequence-orientated programming. | ||
gsl | ISO C++ Guidelines Support Library (GSL) by Microsoft. | ||
gsl-lite | ISO C++ Guidelines Support Library (GSL). | ||
hana | Your standard library for metaprogramming. | ||
itlib | Standard-library-like containers and extensions. | ||
leaf | Lightweight Error Augmentation Framework. | ||
libunifex | Unified Executors | ||
match(it) | A lightweight pattern-matching library for C++17 with macro-free APIs. | ||
mp11 | C++11 metaprogramming library. | ||
NanoRange | Range-based goodness for C++17. | ||
numeric_ranges | Numeric algorithms for C++20 Ranges. | ||
optional | C++11/14/17 std::optional. | ||
optional-lite | A C++17-like optional for C++98/11 and later. | ||
range-v3 | Range library for C++14/17/20. | ||
rangesnext | Tanges features for c+23 ported to C++20. | ||
span-lite | A C++20-like span for C++98/11 and later. | ||
string-view-lite | A C++17-like string_view for C++98/11 and later. | ||
uberswitch | Alternative to the C++ switch statement. | ||
variant-lite | A C++17-like variant for C++98/11 and later. | ||
Windows Implementation Libraries (WIL) | Readable type-safe C++ interfaces for common Windows coding patterns. |
State Machine
Library | Stars | Description | License |
---|---|---|---|
hfsm2 | High-performance hierarchical finite state machine framework. | ||
hsm | Finite state machine library based on the boost hana. | ||
tinyfsm | A simple C++ finite state machine library. | ||
SMLite | State machine library for C, C++, C#, Java, JavaScript, Python, VB.Net . | ||
cuestate | C++ template metaprogramming FSM. |
Statistics
Library | Stars | Description | License |
---|---|---|---|
histogram | Multi-dimensional generalized histograms. | ||
kalman | Kalman Filtering Library (EKF, UKF) based on Eigen3. | ||
stats | Statistical distribution functions. |
String Utilities
Library | Stars | Description | License |
---|---|---|---|
utf-cpp | UTF-8/16/32 for Windows/Linux/MacOs. | ||
wildcards | String matching using wildcards. |
Templating Engines
Library | Stars | Description | License |
---|---|---|---|
inja | A Template Engine for Modern C++. |
Terminal Utilities
Library | Stars | Description | License |
---|---|---|---|
indicators | Activity Indicators for Modern C++. | ||
rang | A Minimal library for terminal goodies ðâ¨. | ||
termcolor | Print colored messages to the terminal. |
Testing Frameworks
Library | Stars | Description | License |
---|---|---|---|
ApprovalTests.cpp | Native ApprovalTests for C++. | ||
Catch2 | Test framework for unit-tests, TDD and BDD. | ||
doctest | The fastest feature-rich C++11/14/17/20 testing framework. | ||
iutest | Test framework for unit-tests. | ||
lest | Tiny framework for unit-tests, TDD and BDD. | ||
snitch | Lightweight C++20 testing framework. | ||
ut | UT: C++20 μ(micro)/Unit Testing Framework. |
Unicode
Library | Stars | Description | License |
---|---|---|---|
cpp-unicodelib | C++17 Unicode library. | ||
uni-algo | Unicode algorithms for C++17. |
Units
Library | Stars | Description | License |
---|---|---|---|
LLNL/units | Run-time unit representation and conversion. | ||
mpusz/units | Compile-time dimensional analysis and unit/quantity manipulation. | ||
nholthaus/units | Dimensional analysis and unit conversion library. | ||
SI | Type safety and user defined literals for physical units. |
Validation
Library | Stars | Description | License |
---|---|---|---|
cpp-validator | C++ library for data validation. |
Web Frameworks
Library | Stars | Description | License |
---|---|---|---|
crow | Micro web framework inspired by Python Flask. |
Top Related Projects
A modern formatting library
JSON for Modern C++
Fast C++ logging library.
A modern, C++-native, test framework for unit-tests, TDD and BDD - using C++14, C++17 and later (C++11 support is in v2.x branch, and C++03 on the Catch1.x branch)
A fast JSON parser/generator for C++ with both SAX/DOM style API
Static reflection for enums (to string, from string, iteration) for modern C++, work with any enum type without any macro or boilerplate code
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot