awesome-modern-cpp
by rigtorp
A collection of resources on modern C++
AI summary
C++ resource hub
A collection of resources to help software developers learn about and work with modern C++ versions.
- stars
- 12K
- forks
- 1.2K
- watching
- 493
- awesome lists
- 3
- entries
- 203
What's in the list
203 links in 25 sections, with live GitHub stats.activeno commit in 2y
Books
- A Tour of C++
(Bjarne Stroustrup) [C++11/17/20]
- The C++ Programming Language
(Bjarne Stroustrup) [C++11]
- Effective Modern C++
(Scott Meyers) [C++11/14]
- Overview of the New C++
(Scott Meyers) [C++11/14]
C++ Core Guidelines
(Bjarne Stroustrup, Herb Sutter) [C++11/14/17] - Guidelines for using modern C++
- C++ Concurrency in Action
(Anthony Williams) [C++11/14/17] - Reference and guide to writing multi-threaded code with standard C++
- C++17 - The Complete Guide
(Nicolai M. Josuttis) [C++17] - Giving guidance on how to use Language and Library Features of C++17
- Professional CMake
(Craig Scott) - A practical guide for using CMake to build your C++ projects
- Modern C++ Tutorial: C++ 11/14/17/20 On the Fly
(Changkun Ou) - The book claims to be "On the Fly". Its intent is to provide a comprehensive introduction to the relevant features regarding modern C++ (before 2020s)
Community
- CppCast
( , ) - The first podcast by C++ developers for C++ developers!
- Cpp.chat
( , ) - Comments on c++ and issues of interest to c++ programmers
- C++ Weekly
Educational videos by Jason Turner
- r/cpp
The C++ subreddit
- C++ Slack
The C++ Slack workspace
- r/cpp_questions
A subreddit for C++ questions and answers
- Stackoverflow C++
/ / / / - Stackoverflow questions about C++
- C++ Slack
Search for channels starting with in the
Community / Talks
- CppCon Talks
Talks from the C++ Conference
- C++Now Talks
Talks from the C++Now conference
Community / Blogs
- Andrzej's C++ blog
Guidelines and thoughts about C++
- Embedded in Academia
John Regehr, Professor of Computer Science, University of Utah, USA
- Fluent C++
Expressive Code in C++
- Guru of the Week (new posts)
A regular series of C++ programming problems created and written by Herb Sutter
- Guru of the Week (older posts)
Older Guru of the Week posts
- Simplify C++
Write clean and maintainable C++
- Sticky Bits
A blog looking at developing software for real-time and embedded systems
- Sutter's Mill
Herb Sutter on software development
- The View from Aristeia
-Scott Meyers' Professional Activities and Interests
Community / Websites
- C++ Best Practices
Collaborative Collection of C++ Best Practices
- C++ Patterns
A repository of modern C++ patterns
- C++ reference
🔥 - C++ reference
- C++ By Example
Learn C++ by Example!
Project Starter Templates
ModernCppStarter
A template for kick-starting modern C++ projects using CMake, CI, code coverage, clang-format, reproducible dependency management and more
modern-cpp-template
A template for modern C++ projects using CMake, Clang-Format, CI, unit testing and more, with support for downstream inclusion
cmake_template
A template CMake project to get you started with C++ and tooling
Pitchfork
Pitchfork is a Set of C++ Project Conventions
Libraries / Kitchensink / Framework
- abseil
Abseil is an open-source collection of C++ code (compliant to C++11) designed to augment the C++ standard library
- Boost
Collection of C++ libraries
Folly
Facebook Open-source Library
- POCO
The POCO C++ Libraries are powerful cross-platform C++ libraries for building network- and internet-based applications that run on desktop, server, mobile, IoT, and embedded systems
nonstd-lite
Parent of *-lite repositories, a migration path to post-C++11 features for pre-C++11 environments
xtd
Modern C++17/20 framework to create console (CLI), forms (GUI like WinForms) and tunit (unit tests like Microsoft Unit Testing Framework) applications on Windows, macOS, Linux, iOS and android
Libraries / Testing
Approval Tests for C++
Native ApprovalTests for C++ on Linux, Mac and Windows
autocheck
QuickCheck and SmallCheck clones for C++
- Bandit
A header-only framework for C++11 that wants to make working with unit tests a pleasant experience
- Boost:UT
C++20 μ(micro)/Unit Testing framework, single-header, without need for macros
- Boost.Test
Boost testing framework
Catch
🔥 - A modern, C++-native, header-only, framework for unit-tests, TDD and BDD
clean-test
A modern C++-20 testing framework
doctest
🚀 - The fastest feature-rich C++11/14/17/20 single-header testing framework for unit tests and TDD
Fakeit
C++ mocking made easy. A simple yet very expressive, headers only library for c++ mocking
Googletest
Google Testing and Mocking Framework
Mull
Practical mutation testing tool for C and C++
rapidcheck
QuickCheck clone for C++
snitch
Lightweight C++20 testing framework
Libraries / Benchmarking
Celero
C++ Benchmark Authoring Library/Framework
Google Benchmark
🌟 - A microbenchmark support library
hayai
the C++ benchmarking framework
Nonius
A C++ micro-benchmarking framework. C++ Benchmark Authoring Library/Framework
nanobench
Simple, fast, accurate single-header microbenchmarking functionality for C++11/14/17/20
Libraries / Logging
Libraries / Threading
concurrentqueue
A fast multi-producer, multi-consumer lock-free concurrent queue for C++11
Cpp-Taskflow
Modern C++ Parallel Task Programming Library
Junction
Concurrent data structures in C++
MPMCQueue
A bounded multi-producer multi-consumer lock-free queue written in C++11
SPSCQueue
A bounded single-producer single-consumer wait-free and lock-free queue written in C++11
- Threading Building Blocks
Threading Building Blocks (TBB) is a C++ template library developed by Intel for parallel programming on multi-core processors. Using TBB, a computation is broken down into tasks that can run in parallel. The library manages and schedules threads to execute these tasks
execq
Smart queue that executes tasks in threadpool-like manner (serial / concurrent) in C++11
concurrencpp
A general concurrency library containing tasks, executors, timers and C++20 coroutines to rule them all
Libraries / Parsing & Serialization
json
🥇 - JSON for Modern C++
jsoncpp
A C++ library for interacting with JSON
toml++
A header-only C++17 library for parsing TOML v0.5.0 and later
tinytoml
-A header only C++11 library for parsing TOML
yaml-cpp
A YAML parser and emitter in C++
cpptoml
A header-only library for parsing TOML configuration files
cereal
A C++11 library for serialization
cista
A C++17 library for high-performance zero-copy binary serialization
simdjson
Accelerate the parsing of JSON per se using commonly available SIMD instructions
Boost.JSON
A JSON library with robust support for custom allocators
hjson-cpp
A C++11 library for reading and writing Hjson and/or JSON files
json_struct
High performance, single header JSON parser, parsing directly to and from C++ structs
daw_json_link
Fast, convenient JSON serialization and parsing in C++
Libraries / String formatting & templating
- {fmt}
Small, safe and fast formatting library
Inja
A Template Engine for Modern C++
Mustache
Mustache text templates in C++11
tinyformat.h
Minimal, type safe printf replacement library for C++
Libraries / Scripting
sol2
C++ library binding to Lua
- ChaiScript
An easy to use embedded scripting language for C++
pybind11
Seamless operability between C++11 and Python
Libraries / Web / HTTP
Beast
HTTP and WebSocket built on Boost.Asio in C++11
cpprestsdk
The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services
cpr
C++ Requests: Curl for People, a spiritual port of Python Requests
- Crow
A Fast and Easy to use microframework for creating webservers (inspired by Python Flask)
- dmbcs-micro-server
C++20-based JSON, HTML, text and PNGs over HTTP; simple way to embed a server into your application to provide a web-based UI
Drogon
A C++14/17 based, high-performance HTTP application framework
oat++
High-performance Web framework (C++11, zero-dependency)
- pistache
An elegant C++ REST framework
restbed
Restbed framework brings asynchronous RESTful functionality to C++11 applications
Libraries / Database
mongo-cxx-driver
C++ Driver for MongoDB
redox
Modern, asynchronous, and wicked fast C++11 client for Redis
sqlite_orm
powerful header only SQLite3 ORM library for C++14
sqlite3pp
C++ wrapper of SQLite3 API
sqlpp11
A type safe SQL template library for C++
libpqxx
The official C++ client API for PostgreSQL
TinyORM
Modern C++ ORM library
Libraries / BioC++
- SeqAn
The modern C++ library for sequence analysis (C++17, C++20)
Libraries / Misc
ASAP
header-only library to parse, display, operate and iterate on dates
BigIntegerCPP
A C++11 large integer library with effective high performance, simplistic in nature and also clean in the eyes
- CAF
An Open Source Implementation of the Actor Model in C++
- Cinder
Cinder is a free and open source library for professional-quality creative coding in C++
Conduit
High Performance Streams Based on Coroutine TS
cppitertools
itertools (python) implementation for C++14
cxxopts
Lightweight C++ command line option parser
date
A date and time library based on the C++11/14/17
docopt.cpp
docopt creates beautiful command-line interfaces
EnTT
A header-only, fast and, reliable entity-component system (ECS) for modern C++
Font Chef
A C99 and C++14 library to cook fonts and render text
HashLibPlus
A C++11 library that provides an easy to use interface for computing hashes and checksums of strings, files, streams, bytearrays and untyped data to mention but a few. It also supports Incremental Hashing
IntX
A C++11 port of IntX arbitrary precision Integer library with speed, about O(N * log N) multiplication/division algorithms implementation
iod
Meta programming utilities for C++14
Magic Enum
Static reflection for enums (to string, from string, iteration) for modern C++, work with any enum type without any macro or boilerplate code
Wise Enum
Static reflection for enums similar to Magic Enum but works with C++ 11/14/17
Nameof
A header-only C++17 library provides nameof macros and functions to obtain the simple name of variable, type, function, macro, and enum
PEGTL
Parsing Expression Grammar Template Library (C++11, header-only)
random
A simple, convenient, header only Random for modern C++
rang
A simple, modern & header only C++11 library for colors in your terminal
range-v3
Experimental range library for C++11/14/17
SimpleBaseLib4CPP
A simple C++11 Base Encoding library that provides at the moment support for encoding and decoding various bases such as Base16, Base32 (various variants), Base58 (various variants), Base64 (various variants). [MIT]
simple_match
Simple header only pattern matching for c++14
SRL-CPP
A Simple Regex Language builder library written in C++11 that provides an easy to use interface for constructing both simple and complex regex expressions. [MIT]
tweeny
A header only interpolation library with 30+ easing functions
Vireo
A lightweight and versatile video processing library by Twitter
AssociatedEnum
header-only library for C++ for enumerations with associated values
- openFrameworks
an open source C++ toolkit for creative coding
Tools / Misc
- clang-format
🌟 - A tool to format C++ code
- clangd
understands your C++ code and adds smart features to your editor: code completion, compile errors, go-to-definition and more
- Compiler Explorer
Interactively explore the assembly output of your C++ code
cquery
C/C++ language server supporting multi-million line code base, powered by libclang. Emacs, Vim, VSCode, and others with language server protocol support. Cross references, completion, diagnostics, semantic highlighting and more (No more commits since Nov 27, 2018)
ccls
C/C++/ObjC language server supporting cross references, hierarchies, completion and semantic highlighting, forked from cquery, which is under active development
irony-mode
A C/C++ minor mode for Emacs powered by libclang
modern-cpp-font-lock-mode
Syntax highlighting support for Modern C++ with emacs
Tools / Dynamic analysis
sanitizers
🌟 - This project is the home for Sanitizers: AddressSanitizer, MemorySanitizer, ThreadSanitizer, LeakSanitizer, and more
- Valgrind
is an instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can automatically detect many memory management and threading bugs, and profile your programs in detail. You can also use Valgrind to build new tools
Tools / Static analysis
- cppcheck
is a static analysis tool for C/C++ code. It provides unique code analysis to detect bugs and focuses on detecting undefined behaviour and dangerous coding constructs
- clang-tidy
🌟 - is a clang-based C++ “linter” tool. Its purpose is to provide an extensible framework for diagnosing and fixing typical programming errors, like style violations, interface misuse, or bugs that can be deduced via static analysis. clang-tidy is modular and provides a convenient interface for writing new checks
- clang-analyzer
is a source code analysis tool that finds bugs in C, C++, and Objective-C programs. It implements path-sensitive, inter-procedural analysis based on symbolic execution technique
Tools / Fuzzing
- American fuzzy lop
American fuzzy lop is a security-oriented fuzzer
- hongfuzz
A security oriented, feedback-driven, evolutionary, easy-to-use fuzzer with interesting analysis options
- libFuzzer
A library for coverage-guided fuzz testing
Tools / Build system
- Bazel
is a fast, scalable, multi-language and extensible build system
- build2
is a cross-platform build toolchain for developing and packaging C and C++ code
- CMake
🌟 - Cross-platform family of tools designed to build, test and package software
- Meson
is an open source build system meant to be both extremely fast, and, even more importantly, as user friendly as possible
- XMake
is a cross-platform build utility based on Lua
Tools / Package management
Buckaroo
Fully Decentralized Polyglot Package Manager for C++ and Friends
cget
CMake package retrieval
- conan
C/C++ package manager
CPM
A CMake script for setup-free cross-plattform dependency management
Hunter
Cross-platform package manager for C++
vcpkg
C++ Library Manager for Windows, Linux, and MacOS
- xrepo
A cross-platform C/C++ package manager based on Xmake
About
Nothing in this list matches your filter.
Featured in 3 awesome lists
Each link jumps to the spot where the list mentions awesome-modern-cpp.