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: about 2 years 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 Guidelines43,002almost 2 years 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++ WeeklyEducational videos by Jason Turner
C++ Standards Committee Papers
r/cppThe C++ subreddit
C++ SlackThe C++ Slack workspace
CoreHard Telegram group
r/cpp_questionsA 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++ SlackSearch for channels starting with in the

Awesome Modern C++ / Community / Talks

CppCon TalksTalks 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 TalksTalks 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++ blogGuidelines and thoughts about C++
Anthony Williams' blog
Embedded in AcademiaJohn 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 BitsA blog looking at developing software for real-time and embedded systems
Sutter's MillHerb 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 PracticesCollaborative Collection of C++ Best Practices
C++ PatternsA repository of modern C++ patterns
C++ reference๐Ÿ”ฅ - C++ reference
C++ By ExampleLearn C++ by Example!

Awesome Modern C++ / Project Starter Templates

ModernCppStarter4,526almost 2 years agoA template for kick-starting modern C++ projects using CMake, CI, code coverage, clang-format, reproducible dependency management and more
modern-cpp-template1,742over 2 years agoA template for modern C++ projects using CMake, Clang-Format, CI, unit testing and more, with support for downstream inclusion
cmake_template1,169about 2 years agoA template CMake project to get you started with C++ and tooling
Pitchfork1,123over 2 years agoPitchfork is a Set of C++ Project Conventions

Awesome Modern C++ / Libraries / Kitchensink / Framework

abseilAbseil is an open-source collection of C++ code (compliant to C++11) designed to augment the C++ standard library
BoostCollection of C++ libraries
Folly28,577almost 2 years agoFacebook Open-source Library
POCOThe 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-lite83about 5 years agoParent of *-lite repositories, a migration path to post-C++11 features for pre-C++11 environments
xtd814almost 2 years agoModern 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++318almost 2 years agoNative ApprovalTests for C++ on Linux, Mac and Windows
autocheck125over 2 years agoQuickCheck and SmallCheck clones for C++
BanditA header-only framework for C++11 that wants to make working with unit tests a pleasant experience
Boost:UTC++20 ฮผ(micro)/Unit Testing framework, single-header, without need for macros
Boost.TestBoost testing framework
Catch18,841almost 2 years ago๐Ÿ”ฅ - A modern, C++-native, header-only, framework for unit-tests, TDD and BDD
clean-test49over 2 years agoA modern C++-20 testing framework
doctest6,010almost 2 years ago๐Ÿš€ - The fastest feature-rich C++11/14/17/20 single-header testing framework for unit tests and TDD
Fakeit1,267almost 2 years agoC++ mocking made easy. A simple yet very expressive, headers only library for c++ mocking
Googletest35,046almost 2 years agoGoogle Testing and Mocking Framework
Mull755almost 2 years agoPractical mutation testing tool for C and C++
rapidcheck1,015about 2 years agoQuickCheck clone for C++
snitch269almost 2 years agoLightweight C++20 testing framework

Awesome Modern C++ / Libraries / Benchmarking

Celero828about 2 years agoC++ Benchmark Authoring Library/Framework
Google Benchmark9,113almost 2 years ago๐ŸŒŸ - A microbenchmark support library
hayai362about 7 years agothe C++ benchmarking framework
Nonius361over 6 years agoA C++ micro-benchmarking framework. C++ Benchmark Authoring Library/Framework
nanobench1,459almost 2 years agoSimple, fast, accurate single-header microbenchmarking functionality for C++11/14/17/20

Awesome Modern C++ / Libraries / Logging

fmtlog814about 2 years agoA fmtlib-style logging library with latency in nanoseconds
spdlog24,698almost 2 years agoFast C++ logging library
loguru1,797about 2 years agoA lightweight and flexible C++ logging library

Awesome Modern C++ / Libraries / Threading

concurrentqueue10,134over 3 years agoA fast multi-producer, multi-consumer lock-free concurrent queue for C++11
Cpp-Taskflow10,338almost 2 years agoModern C++ Parallel Task Programming Library
Junction1,409almost 6 years agoConcurrent data structures in C++
MPMCQueue1,212over 2 years agoA bounded multi-producer multi-consumer lock-free queue written in C++11
SPSCQueue931over 2 years agoA bounded single-producer single-consumer wait-free and lock-free queue written in C++11
Threading Building BlocksThreading 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
execq40almost 3 years agoSmart queue that executes tasks in threadpool-like manner (serial / concurrent) in C++11
concurrencpp2,347about 2 years agoA general concurrency library containing tasks, executors, timers and C++20 coroutines to rule them all

Awesome Modern C++ / Libraries / Parsing & Serialization

json43,665almost 2 years ago๐Ÿฅ‡ - JSON for Modern C++
jsoncpp8,223almost 2 years agoA C++ library for interacting with JSON
toml++1,605almost 2 years agoA header-only C++17 library for parsing TOML v0.5.0 and later
tinytoml167over 2 years ago-A header only C++11 library for parsing TOML
yaml-cpp5,212almost 2 years agoA YAML parser and emitter in C++
cpptoml589almost 3 years agoA header-only library for parsing TOML configuration files
cereal4,257about 2 years agoA C++11 library for serialization
cista1,852almost 2 years agoA C++17 library for high-performance zero-copy binary serialization
simdjson19,455almost 2 years agoAccelerate the parsing of JSON per se using commonly available SIMD instructions
Boost.JSON434almost 2 years agoA JSON library with robust support for custom allocators
hjson-cpp69almost 2 years agoA C++11 library for reading and writing Hjson and/or JSON files
json_struct427about 2 years agoHigh performance, single header JSON parser, parsing directly to and from C++ structs
daw_json_link479almost 2 years agoFast, convenient JSON serialization and parsing in C++

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

{fmt}Small, safe and fast formatting library
Inja1,689almost 2 years agoA Template Engine for Modern C++
Mustache358almost 3 years agoMustache text templates in C++11
tinyformat.h540over 2 years agoMinimal, type safe printf replacement library for C++
pprint912over 6 years agoPretty Printer for Modern C++

Awesome Modern C++ / Libraries / Scripting

sol24,282almost 2 years agoC++ library binding to Lua
ChaiScriptAn easy to use embedded scripting language for C++
pybind1115,935almost 2 years agoSeamless operability between C++11 and Python

Awesome Modern C++ / Libraries / Web / HTTP

Beast4,392almost 2 years agoHTTP and WebSocket built on Boost.Asio in C++11
cpprestsdk8,041almost 2 years agoThe 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
cpr6,633almost 2 years agoC++ Requests: Curl for People, a spiritual port of Python Requests
CrowA Fast and Easy to use microframework for creating webservers (inspired by Python Flask)
dmbcs-micro-serverC++20-based JSON, HTML, text and PNGs over HTTP; simple way to embed a server into your application to provide a web-based UI
Drogon11,701almost 2 years agoA C++14/17 based, high-performance HTTP application framework
oat++7,958almost 2 years agoHigh-performance Web framework (C++11, zero-dependency)
pistacheAn elegant C++ REST framework
restbed1,932about 2 years agoRestbed framework brings asynchronous RESTful functionality to C++11 applications

Awesome Modern C++ / Libraries / Database

mongo-cxx-driver1,048almost 2 years agoC++ Driver for MongoDB
redox388about 4 years agoModern, asynchronous, and wicked fast C++11 client for Redis
sqlite_orm2,330almost 2 years agopowerful header only SQLite3 ORM library for C++14
sqlite3pp610almost 3 years agoC++ wrapper of SQLite3 API
sqlpp112,483almost 2 years agoA type safe SQL template library for C++
libpqxx1,049almost 2 years agoThe official C++ client API for PostgreSQL
TinyORM259almost 2 years agoModern C++ ORM library

Awesome Modern C++ / Libraries / BioC++

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

Awesome Modern C++ / Libraries / Misc

ASAP76over 3 years agoheader-only library to parse, display, operate and iterate on dates
BigIntegerCPP33over 7 years agoA C++11 large integer library with effective high performance, simplistic in nature and also clean in the eyes
CAFAn Open Source Implementation of the Actor Model in C++
CinderCinder is a free and open source library for professional-quality creative coding in C++
Conduit148over 7 years agoHigh Performance Streams Based on Coroutine TS
cppitertools1,372almost 2 years agoitertools (python) implementation for C++14
cxxopts4,270almost 2 years agoLightweight C++ command line option parser
date3,190almost 2 years agoA date and time library based on the C++11/14/17
docopt.cpp1,047over 2 years agodocopt creates beautiful command-line interfaces
EnTT10,370almost 2 years agoA header-only, fast and, reliable entity-component system (ECS) for modern C++
Font Chef53almost 5 years agoA C99 and C++14 library to cook fonts and render text
HashLibPlus32over 2 years agoA 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
IntX10about 7 years agoA C++11 port of IntX arbitrary precision Integer library with speed, about O(N * log N) multiplication/division algorithms implementation
iod726almost 7 years agoMeta programming utilities for C++14
Magic Enum5,042almost 2 years agoStatic reflection for enums (to string, from string, iteration) for modern C++, work with any enum type without any macro or boilerplate code
Wise Enum289over 2 years agoStatic reflection for enums similar to Magic Enum but works with C++ 11/14/17
Nameof2,106almost 2 years agoA header-only C++17 library provides nameof macros and functions to obtain the simple name of variable, type, function, macro, and enum
PEGTL1,957almost 2 years agoParsing Expression Grammar Template Library (C++11, header-only)
random914about 2 years agoA simple, convenient, header only Random for modern C++
rang1,503about 2 years agoA simple, modern & header only C++11 library for colors in your terminal
range-v34,156almost 2 years agoExperimental range library for C++11/14/17
SimpleBaseLib4CPP3almost 5 years agoA 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_match228over 5 years agoSimple header only pattern matching for c++14
SRL-CPP0almost 5 years agoA 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]
tweeny752over 2 years agoA header only interpolation library with 30+ easing functions
Vireo936almost 5 years agoA lightweight and versatile video processing library by Twitter
indicators3,049about 2 years agoActivity Indicators for Modern C++
AssociatedEnum20almost 7 years agoheader-only library for C++ for enumerations with associated values
openFrameworksan open source C++ toolkit for creative coding
tabulate1,966about 2 years agoTable Maker for Modern C++

Awesome Modern C++ / Tools / Misc

clang-format๐ŸŒŸ - A tool to format C++ code
clangdunderstands your C++ code and adds smart features to your editor: code completion, compile errors, go-to-definition and more
Compiler ExplorerInteractively explore the assembly output of your C++ code
cquery2,349about 6 years agoC/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)
ccls3,795almost 2 years agoC/C++/ObjC language server supporting cross references, hierarchies, completion and semantic highlighting, forked from cquery, which is under active development
irony-mode912almost 3 years agoA C/C++ minor mode for Emacs powered by libclang
modern-cpp-font-lock-mode168over 5 years agoSyntax highlighting support for Modern C++ with emacs

Awesome Modern C++ / Tools / Dynamic analysis

sanitizers11,610almost 2 years ago๐ŸŒŸ - This project is the home for Sanitizers: AddressSanitizer, MemorySanitizer, ThreadSanitizer, LeakSanitizer, and more
Valgrindis 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

cppcheckis 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-analyzeris 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 lopAmerican fuzzy lop is a security-oriented fuzzer
hongfuzzA security oriented, feedback-driven, evolutionary, easy-to-use fuzzer with interesting analysis options
libFuzzerA library for coverage-guided fuzz testing

Awesome Modern C++ / Tools / Build system

Bazelis a fast, scalable, multi-language and extensible build system
build2is 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
Mesonis an open source build system meant to be both extremely fast, and, even more importantly, as user friendly as possible
XMakeis a cross-platform build utility based on Lua

Awesome Modern C++ / Tools / Package management

Buckaroo938almost 4 years agoFully Decentralized Polyglot Package Manager for C++ and Friends
cget454over 2 years agoCMake package retrieval
conanC/C++ package manager
CPM3,099about 2 years agoA CMake script for setup-free cross-plattform dependency management
Hunter614almost 2 years agoCross-platform package manager for C++
vcpkg23,503almost 2 years agoC++ Library Manager for Windows, Linux, and MacOS
xrepoA 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: