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
493 watching
1k forks
Language: HTML
last commit: 7 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 43,002 5 months 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,526 5 months 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,742 about 1 year ago A template for modern C++ projects using CMake, Clang-Format, CI, unit testing and more, with support for downstream inclusion
cmake_template 1,169 8 months ago A template CMake project to get you started with C++ and tooling
Pitchfork 1,123 11 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,577 3 months 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 814 3 months 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 4 months ago Native ApprovalTests for C++ on Linux, Mac and Windows
autocheck 125 9 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,841 4 months ago ๐Ÿ”ฅ - A modern, C++-native, header-only, framework for unit-tests, TDD and BDD
clean-test 49 10 months ago A modern C++-20 testing framework
doctest 6,010 4 months ago ๐Ÿš€ - The fastest feature-rich C++11/14/17/20 single-header testing framework for unit tests and TDD
Fakeit 1,267 6 months ago C++ mocking made easy. A simple yet very expressive, headers only library for c++ mocking
Googletest 35,046 4 months ago Google Testing and Mocking Framework
Mull 755 3 months ago Practical mutation testing tool for C and C++
rapidcheck 1,015 8 months ago QuickCheck clone for C++
snitch 269 4 months ago Lightweight C++20 testing framework

Awesome Modern C++ / Libraries / Benchmarking

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

Awesome Modern C++ / Libraries / Logging

fmtlog 814 8 months ago A fmtlib-style logging library with latency in nanoseconds
spdlog 24,698 4 months ago Fast C++ logging library
loguru 1,797 9 months ago A lightweight and flexible C++ logging library

Awesome Modern C++ / Libraries / Threading

concurrentqueue 10,134 almost 2 years ago A fast multi-producer, multi-consumer lock-free concurrent queue for C++11
Cpp-Taskflow 10,338 3 months ago Modern C++ Parallel Task Programming Library
Junction 1,409 over 4 years ago Concurrent data structures in C++
MPMCQueue 1,212 about 1 year ago A bounded multi-producer multi-consumer lock-free queue written in C++11
SPSCQueue 931 about 1 year 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 over 1 year ago Smart queue that executes tasks in threadpool-like manner (serial / concurrent) in C++11
concurrencpp 2,347 8 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,665 3 months ago ๐Ÿฅ‡ - JSON for Modern C++
jsoncpp 8,223 4 months ago A C++ library for interacting with JSON
toml++ 1,605 4 months ago A header-only C++17 library for parsing TOML v0.5.0 and later
tinytoml 167 9 months ago -A header only C++11 library for parsing TOML
yaml-cpp 5,212 5 months ago A YAML parser and emitter in C++
cpptoml 589 over 1 year ago A header-only library for parsing TOML configuration files
cereal 4,257 7 months ago A C++11 library for serialization
cista 1,852 3 months ago A C++17 library for high-performance zero-copy binary serialization
simdjson 19,455 4 months ago Accelerate the parsing of JSON per se using commonly available SIMD instructions
Boost.JSON 434 4 months ago A JSON library with robust support for custom allocators
hjson-cpp 69 6 months ago A C++11 library for reading and writing Hjson and/or JSON files
json_struct 427 6 months ago High performance, single header JSON parser, parsing directly to and from C++ structs
daw_json_link 479 4 months 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,689 6 months ago A Template Engine for Modern C++
Mustache 358 over 1 year ago Mustache text templates in C++11
tinyformat.h 540 about 1 year ago Minimal, type safe printf replacement library for C++
pprint 912 about 5 years ago Pretty Printer for Modern C++

Awesome Modern C++ / Libraries / Scripting

sol2 4,282 5 months ago C++ library binding to Lua
ChaiScript An easy to use embedded scripting language for C++
pybind11 15,935 3 months ago Seamless operability between C++11 and Python

Awesome Modern C++ / Libraries / Web / HTTP

Beast 4,392 3 months ago HTTP and WebSocket built on Boost.Asio in C++11
cpprestsdk 8,041 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,633 4 months 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,701 4 months ago A C++14/17 based, high-performance HTTP application framework
oat++ 7,958 4 months ago High-performance Web framework (C++11, zero-dependency)
pistache An elegant C++ REST framework
restbed 1,932 7 months ago Restbed framework brings asynchronous RESTful functionality to C++11 applications

Awesome Modern C++ / Libraries / Database

mongo-cxx-driver 1,048 3 months ago C++ Driver for MongoDB
redox 388 over 2 years ago Modern, asynchronous, and wicked fast C++11 client for Redis
sqlite_orm 2,330 3 months ago powerful header only SQLite3 ORM library for C++14
sqlite3pp 610 over 1 year ago C++ wrapper of SQLite3 API
sqlpp11 2,483 3 months ago A type safe SQL template library for C++
libpqxx 1,049 4 months ago The official C++ client API for PostgreSQL
TinyORM 259 3 months 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 almost 2 years ago header-only library to parse, display, operate and iterate on dates
BigIntegerCPP 33 almost 6 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 148 about 6 years ago High Performance Streams Based on Coroutine TS
cppitertools 1,372 5 months ago itertools (python) implementation for C++14
cxxopts 4,270 3 months ago Lightweight C++ command line option parser
date 3,190 4 months ago A date and time library based on the C++11/14/17
docopt.cpp 1,047 12 months ago docopt creates beautiful command-line interfaces
EnTT 10,370 3 months ago A header-only, fast and, reliable entity-component system (ECS) for modern C++
Font Chef 53 over 3 years ago A C99 and C++14 library to cook fonts and render text
HashLibPlus 32 about 1 year 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 over 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 726 over 5 years ago Meta programming utilities for C++14
Magic Enum 5,042 4 months 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 about 1 year ago Static reflection for enums similar to Magic Enum but works with C++ 11/14/17
Nameof 2,106 6 months 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,957 3 months ago Parsing Expression Grammar Template Library (C++11, header-only)
random 914 8 months ago A simple, convenient, header only Random for modern C++
rang 1,503 8 months ago A simple, modern & header only C++11 library for colors in your terminal
range-v3 4,156 6 months ago Experimental range library for C++11/14/17
SimpleBaseLib4CPP 3 over 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 228 almost 4 years ago Simple header only pattern matching for c++14
SRL-CPP 0 over 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 752 12 months ago A header only interpolation library with 30+ easing functions
Vireo 936 over 3 years ago A lightweight and versatile video processing library by Twitter
indicators 3,049 8 months ago Activity Indicators for Modern C++
AssociatedEnum 20 over 5 years ago header-only library for C++ for enumerations with associated values
openFrameworks an open source C++ toolkit for creative coding
tabulate 1,966 9 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,349 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,795 4 months ago C/C++/ObjC language server supporting cross references, hierarchies, completion and semantic highlighting, forked from cquery, which is under active development
irony-mode 912 over 1 year ago A C/C++ minor mode for Emacs powered by libclang
modern-cpp-font-lock-mode 168 almost 4 years ago Syntax highlighting support for Modern C++ with emacs

Awesome Modern C++ / Tools / Dynamic analysis

sanitizers 11,610 5 months 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 938 over 2 years ago Fully Decentralized Polyglot Package Manager for C++ and Friends
cget 454 11 months ago CMake package retrieval
conan C/C++ package manager
CPM 3,099 7 months ago A CMake script for setup-free cross-plattform dependency management
Hunter 614 4 months ago Cross-platform package manager for C++
vcpkg 23,503 3 months 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: