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++
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 |