awesome-modern-cpp

C++ resource hub

A collection of resources to help software developers learn about and work with modern C++ versions.

A collection of resources on modern C++

GitHub

12k stars
492 watching
1k forks
Language: HTML
last commit: 3 months ago
Linked from 3 awesome lists

cppcpp11cpp14cpp17cpp1zcpp20

Awesome Modern C++ / 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 42,842 28 days ago (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)

Awesome Modern C++ / Community

News, Status & Discussion about Standard C++
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
C++ Standards Committee Papers
r/cpp The C++ subreddit
C++ Slack The C++ Slack workspace
CoreHard Telegram group
r/cpp_questions A subreddit for C++ questions and answers
Stackoverflow C++ / / / / - Stackoverflow questions about C++
C++ Super-FAQ
C++11 FAQ
List of upcoming and past C++ conferences
Meeting C++ list of user groups
List of user groups in the C++ Super-FAQ
C/C++ meetups
C++ Slack Search for channels starting with in the

Awesome Modern C++ / Community / Talks

CppCon Talks Talks from the C++ Conference
CppCon 2014: Bjarne Stroustrup "Make Simple Tasks Simple!"
CppCon 2014: Herb Sutter "Lock-Free Programming (or, Juggling Razor Blades), Part I"
CppCon 2014: Herb Sutter "Lock-Free Programming (or, Juggling Razor Blades), Part II"
CppCon 2014: Scott Meyers "Type Deduction and Why You Care"
CppCon 2015: Bjarne Stroustrup "Writing Good C++14"
CppCon 2015: Herb Sutter "Writing Good C++14... By Default"
CppCon 2016: Chandler Carruth โ€œGarbage In, Garbage Out: Arguing about Undefined Behavior..."
CppCon 2016: Herb Sutter "Leak-Freedom in C++... By Default."
CppCon 2017: Jason Turner "Practical C++17"
CppCon 2018: Jonathan Boccara โ€œ105 STL Algorithms in Less Than an Hourโ€
code::dive conference 2014 - Scott Meyers: Cpu Caches and Why You Care ( )
code::dive conference 2015 - Andrei Alexandrescu - Writing Fast Code I ( )
code::dive conference 2015 - Andrei Alexandrescu - Writing Fast Code II ( )
C++Now Talks Talks from the C++Now conference
Going Native 2012: Variadic Templates are Funadic
Going Native 2013: Stephan T Lavavej - "Don't Help the Compiler"
Going Native 2013: Sean Parent - "C++ Seasoning"

Awesome Modern C++ / Community / Blogs

Andrzej's C++ blog Guidelines and thoughts about C++
Anthony Williams' blog
Embedded in Academia John Regehr, Professor of Computer Science, University of Utah, USA
Eric Niebler
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
Marshall's C++ Musings
Paul Fultz II's Blog
Preshing on Programming
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
Visual C++ Team Blog
Why is a raven like a writing desk?

Awesome Modern C++ / 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!

Awesome Modern C++ / Project Starter Templates

ModernCppStarter 4,468 about 1 month ago A template for kick-starting modern C++ projects using CMake, CI, code coverage, clang-format, reproducible dependency management and more
modern-cpp-template 1,730 8 months ago A template for modern C++ projects using CMake, Clang-Format, CI, unit testing and more, with support for downstream inclusion
cmake_template 1,138 4 months ago A template CMake project to get you started with C++ and tooling
Pitchfork 1,110 7 months ago Pitchfork is a Set of C++ Project Conventions

Awesome Modern C++ / 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 28,434 6 days ago 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 83 over 3 years ago Parent of *-lite repositories, a migration path to post-C++11 features for pre-C++11 environments
xtd 805 4 days ago 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

Awesome Modern C++ / Libraries / Testing

Approval Tests for C++ 318 16 days ago Native ApprovalTests for C++ on Linux, Mac and Windows
autocheck 125 5 months ago 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 18,713 9 days ago ๐Ÿ”ฅ - A modern, C++-native, header-only, framework for unit-tests, TDD and BDD
clean-test 49 6 months ago A modern C++-20 testing framework
doctest 5,907 2 months ago ๐Ÿš€ - The fastest feature-rich C++11/14/17/20 single-header testing framework for unit tests and TDD
Fakeit 1,255 about 2 months ago C++ mocking made easy. A simple yet very expressive, headers only library for c++ mocking
Googletest 34,781 17 days ago Google Testing and Mocking Framework
Mull 740 4 months ago Practical mutation testing tool for C and C++
rapidcheck 1,010 4 months ago QuickCheck clone for C++
snitch 264 18 days ago Lightweight C++20 testing framework

Awesome Modern C++ / Libraries / Benchmarking

Celero 824 about 2 months ago C++ Benchmark Authoring Library/Framework
Google Benchmark 9,035 8 days ago ๐ŸŒŸ - A microbenchmark support library
hayai 362 about 5 years ago the C++ benchmarking framework
Nonius 359 over 4 years ago A C++ micro-benchmarking framework. C++ Benchmark Authoring Library/Framework
nanobench 1,440 about 2 months ago Simple, fast, accurate single-header microbenchmarking functionality for C++11/14/17/20

Awesome Modern C++ / Libraries / Logging

fmtlog 801 3 months ago A fmtlib-style logging library with latency in nanoseconds
spdlog 24,386 11 days ago Fast C++ logging library
loguru 1,788 5 months ago A lightweight and flexible C++ logging library

Awesome Modern C++ / Libraries / Threading

concurrentqueue 9,995 over 1 year ago A fast multi-producer, multi-consumer lock-free concurrent queue for C++11
Cpp-Taskflow 10,235 27 days ago Modern C++ Parallel Task Programming Library
Junction 1,408 about 4 years ago Concurrent data structures in C++
MPMCQueue 1,196 9 months ago A bounded multi-producer multi-consumer lock-free queue written in C++11
SPSCQueue 913 11 months ago 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 40 about 1 year ago Smart queue that executes tasks in threadpool-like manner (serial / concurrent) in C++11
concurrencpp 2,312 3 months ago A general concurrency library containing tasks, executors, timers and C++20 coroutines to rule them all

Awesome Modern C++ / Libraries / Parsing & Serialization

json 43,219 6 days ago ๐Ÿฅ‡ - JSON for Modern C++
jsoncpp 8,173 about 2 months ago A C++ library for interacting with JSON
toml++ 1,577 7 days ago A header-only C++17 library for parsing TOML v0.5.0 and later
tinytoml 167 5 months ago -A header only C++11 library for parsing TOML
yaml-cpp 5,160 14 days ago A YAML parser and emitter in C++
cpptoml 587 about 1 year ago A header-only library for parsing TOML configuration files
cereal 4,237 3 months ago A C++11 library for serialization
cista 1,837 15 days ago A C++17 library for high-performance zero-copy binary serialization
simdjson 19,359 13 days ago Accelerate the parsing of JSON per se using commonly available SIMD instructions
Boost.JSON 434 6 days ago A JSON library with robust support for custom allocators
hjson-cpp 70 about 2 months ago A C++11 library for reading and writing Hjson and/or JSON files
json_struct 423 2 months ago High performance, single header JSON parser, parsing directly to and from C++ structs
daw_json_link 477 7 days ago Fast, convenient JSON serialization and parsing in C++

Awesome Modern C++ / Libraries / String formatting & templating

{fmt} Small, safe and fast formatting library
Inja 1,675 about 2 months ago A Template Engine for Modern C++
Mustache 357 12 months ago Mustache text templates in C++11
tinyformat.h 537 10 months ago Minimal, type safe printf replacement library for C++
pprint 912 almost 5 years ago Pretty Printer for Modern C++

Awesome Modern C++ / Libraries / Scripting

sol2 4,232 15 days ago C++ library binding to Lua
ChaiScript An easy to use embedded scripting language for C++
pybind11 15,766 7 days ago Seamless operability between C++11 and Python

Awesome Modern C++ / Libraries / Web / HTTP

Beast 4,372 6 days ago HTTP and WebSocket built on Boost.Asio in C++11
cpprestsdk 8,017 4 months ago 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 6,581 4 days ago 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 11,607 19 days ago A C++14/17 based, high-performance HTTP application framework
oat++ 7,910 4 months ago High-performance Web framework (C++11, zero-dependency)
pistache An elegant C++ REST framework
restbed 1,929 3 months ago Restbed framework brings asynchronous RESTful functionality to C++11 applications

Awesome Modern C++ / Libraries / Database

mongo-cxx-driver 1,047 6 days ago C++ Driver for MongoDB
redox 386 over 2 years ago Modern, asynchronous, and wicked fast C++11 client for Redis
sqlite_orm 2,298 12 days ago powerful header only SQLite3 ORM library for C++14
sqlite3pp 606 about 1 year ago C++ wrapper of SQLite3 API
sqlpp11 2,473 6 days ago A type safe SQL template library for C++
libpqxx 1,035 5 days ago The official C++ client API for PostgreSQL
TinyORM 242 5 days ago Modern C++ ORM library

Awesome Modern C++ / Libraries / BioC++

SeqAn The modern C++ library for sequence analysis (C++17, C++20)

Awesome Modern C++ / Libraries / Misc

ASAP 76 over 1 year ago header-only library to parse, display, operate and iterate on dates
BigIntegerCPP 33 over 5 years ago 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 147 almost 6 years ago High Performance Streams Based on Coroutine TS
cppitertools 1,369 about 1 month ago itertools (python) implementation for C++14
cxxopts 4,232 29 days ago Lightweight C++ command line option parser
date 3,160 15 days ago A date and time library based on the C++11/14/17
docopt.cpp 1,044 7 months ago docopt creates beautiful command-line interfaces
EnTT 10,245 6 days ago A header-only, fast and, reliable entity-component system (ECS) for modern C++
Font Chef 53 about 3 years ago A C99 and C++14 library to cook fonts and render text
HashLibPlus 29 8 months ago 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 10 about 5 years ago A C++11 port of IntX arbitrary precision Integer library with speed, about O(N * log N) multiplication/division algorithms implementation
iod 727 almost 5 years ago Meta programming utilities for C++14
Magic Enum 4,941 8 days ago 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 289 10 months ago Static reflection for enums similar to Magic Enum but works with C++ 11/14/17
Nameof 2,097 about 1 month ago A header-only C++17 library provides nameof macros and functions to obtain the simple name of variable, type, function, macro, and enum
PEGTL 1,945 4 days ago Parsing Expression Grammar Template Library (C++11, header-only)
random 912 3 months ago A simple, convenient, header only Random for modern C++
rang 1,500 4 months ago A simple, modern & header only C++11 library for colors in your terminal
range-v3 4,144 about 2 months ago Experimental range library for C++11/14/17
SimpleBaseLib4CPP 3 about 3 years ago 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 227 over 3 years ago Simple header only pattern matching for c++14
SRL-CPP 0 about 3 years ago 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 746 8 months ago A header only interpolation library with 30+ easing functions
Vireo 935 about 3 years ago A lightweight and versatile video processing library by Twitter
indicators 3,037 4 months ago Activity Indicators for Modern C++
AssociatedEnum 20 about 5 years ago header-only library for C++ for enumerations with associated values
openFrameworks an open source C++ toolkit for creative coding
tabulate 1,941 5 months ago Table Maker for Modern C++

Awesome Modern C++ / 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 2,347 over 4 years ago 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 3,773 5 days ago C/C++/ObjC language server supporting cross references, hierarchies, completion and semantic highlighting, forked from cquery, which is under active development
irony-mode 910 about 1 year ago A C/C++ minor mode for Emacs powered by libclang
modern-cpp-font-lock-mode 168 over 3 years ago Syntax highlighting support for Modern C++ with emacs

Awesome Modern C++ / Tools / Dynamic analysis

sanitizers 11,517 19 days ago ๐ŸŒŸ - 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

Awesome Modern C++ / 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

Awesome Modern C++ / 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

Awesome Modern C++ / 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

Awesome Modern C++ / Tools / Package management

Buckaroo 936 almost 2 years ago Fully Decentralized Polyglot Package Manager for C++ and Friends
cget 453 7 months ago CMake package retrieval
conan C/C++ package manager
CPM 3,035 3 months ago A CMake script for setup-free cross-plattform dependency management
Hunter 612 6 days ago Cross-platform package manager for C++
vcpkg 23,263 6 days ago C++ Library Manager for Windows, Linux, and MacOS
xrepo A cross-platform C/C++ package manager based on Xmake

Awesome Modern C++ / About

rigtorp.se
[email protected]
github.com/rigtorp
twitter.com/rigtorp
linkedin.com/in/rigtorp

Backlinks from these awesome lists:

More related projects: