/awesome-modern-cpp

A collection of resources on modern C++

Primary LanguageHTML



Awesome Modern C++

A collection of resources on modern C++.

The goal is to collect a list of resources to help people learn about and leverage modern C++11 and beyond.

Contributing

To add, remove or change things on the list: please submit a pull request to the GitHub repository.

Best Practices

Books

For a comprehensive guide to C++ books see the Stackoverflow Definitive C++ Book Guide and List.

Blogs

Conferences

Libraries

This is not supposed to be a comprehensive list of all C and C++ libraries. It is a list of high-quality modern libraries with general applicability (serialization, database, testing, etc) or high-quality libraries with novel use of new C++ features.

  • abseil - Abseil Common Libraries.
  • 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.
  • Beast - HTTP and WebSocket built on Boost.Asio in C++11.
  • BigIntegerCPP - A C++11 large integer library with effective high performance, simplistic in nature and also clean in the eyes.
  • Boost.Hana - Your standard library for metaprogramming.
  • Boost - Collection of C++ libraries.
  • {fmt} - Small, safe and fast formatting library.
  • CAF - An Open Source Implementation of the Actor Model in C++.
  • Catch - A modern, C++-native, header-only, framework for unit-tests, TDD and BDD.
  • doctest - The lightest feature rich C++ single header testing framework.
  • cereal - A C++11 library for serialization.
  • ChaiScript - An easy to use embedded scripting language for 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.
  • cpptoml - A header-only library for parsing TOML configuration files.
  • cppitertools - itertools (python) implementation for C++14
  • cpr - C++ Requests: Curl for People, a spiritual port of Python Requests.
  • Crow - Crow is very fast and easy to use C++ micro web framework.
  • Cpp-Taskflow - Modern C++ Parallel Task Programming Library
  • cxxopts - Lightweight C++ command line option parser.
  • docopt.cpp - docopt creates beautiful command-line interfaces.
  • date - A date and time library based on the C++11/14/17 header.
  • EnTT - A header-only, fast and, reliable entity-component system (ECS) for modern C++.
  • Drogon - A C++14/17 based, high-performance HTTP application framework
  • Fakeit - A C++11 based simple mocking framework
  • fixed_size_function - Fixed size function wrapper like std::function.
  • Folly - Facebook Open-source Library.
  • HashLib4CPP - 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.
  • Inja - A Template Engine for Modern C++.
  • 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.
  • json - JSON for Modern C++.
  • jsoncpp - A C++ library for interacting with JSON.
  • Junction - Concurrent data structures in C++.
  • 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.
  • mongo-cxx-driver - C++ Driver for MongoDB.
  • mstch - An implementation of Mustache templates using modern C++.
  • Mustache - Mustache text templates in C++11.
  • Nonius - A C++ micro-benchmarking framework.
  • oat++ - High-performance Web framework (C++11, zero-dependency).
  • PEGTL - Parsing Expression Grammar Template Library (C++11, header-only).
  • pistache - An elegant C++ REST framework.
  • pybind11 - Seamless operability between C++11 and Python.
  • 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.
  • rapidcheck - QuickCheck clone for C++.
  • redox - Modern, asynchronous, and wicked fast C++11 client for Redis.
  • restbed - Restbed framework brings asynchronous RESTful functionality to C++11 applications.
  • simple_match - Simple header only pattern matching for c++14.
  • sol2 - C++ library binding to Lua.
  • sqlite3pp - C++ wrapper of SQLite3 API.
  • sqlite_orm - powerful header only SQLite3 ORM library for C++14.
  • sqlpp11 - A type safe SQL template library for C++.
  • tinyformat.h - Minimal, type safe printf replacement library for C++.
  • tinytoml -A header only C++11 library for parsing TOML.
  • tweeny - A header only interpolation library with 30+ easing functions.
  • Vireo - A lightweight and versatile video processing library by Twitter.
  • yaml-cpp - A YAML parser and emitter in C++.
  • ASAP - header-only library to parse, display, operate and iterate on dates.
  • Nameof - A header-only C++17 library provides nameof macros and functions to obtain the simple name of variable, type, function, macro, and enum.

Websites

Talks

Tools

  • American fuzzy lop - American fuzzy lop is a security-oriented fuzzer.
  • Buckaroo - Fully Decentralized Polyglot Package Manager for C++ and Friends
  • cget - CMake package retrieval.
  • clang-format - A tool to format C++ code.
  • clang-tidy - A clang-based C++ "linter" and static analysis tool.
  • CMake - Cross-platform family of tools designed to build, test and package software.
  • Compiler Explorer - Interactively explore the assembly output of your C++ code.
  • conan - C/C++ package manager.
  • cppcheck - Static analysis of C/C++ code.
  • C++ Archive Network - CPPAN - Cross-platform C/C++ package manager.
  • CPM - A CMake script for setup-free cross-plattform dependency management.
  • Hunter - Cross-platform package manager for C++.
  • 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
  • vcpkg - C++ Library Manager for Windows, Linux, and MacOS

Podcasts

About

This list was compiled by Erik Rigtorp with help from the C++ community: