Awesome Lists

awesome-modern-cpp

by rigtorp

awesome listHTMLpushed about 2 years ago

A collection of resources on modern C++

AI summary

C++ resource hub

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

stars
12K
forks
1.2K
watching
493
awesome lists
3
entries
203
View on GitHubawesomecpp.com

Embed the badge

Show how many awesome lists link to your project. The count updates automatically.

Awesome Lists badge
Markdown
[![Awesome Lists Badge](https://awesome.facts.dev/shield/rigtorp/awesome-modern-cpp/links.svg)](https://awesome.facts.dev/awesome/rigtorp/awesome-modern-cpp)
HTML
<a href="https://awesome.facts.dev/awesome/rigtorp/awesome-modern-cpp"><img src="https://awesome.facts.dev/shield/rigtorp/awesome-modern-cpp/links.svg" alt="Awesome Lists Badge" /></a>
Image URL
https://awesome.facts.dev/shield/rigtorp/awesome-modern-cpp/links.svg

What's in the list

203 links in 25 sections, with live GitHub stats.activeno commit in 2y

Books

Community

Community / Talks

Community / Blogs

Community / Websites

Project Starter Templates

  • ModernCppStarter

    A template for kick-starting modern C++ projects using CMake, CI, code coverage, clang-format, reproducible dependency management and more

  • modern-cpp-template

    A template for modern C++ projects using CMake, Clang-Format, CI, unit testing and more, with support for downstream inclusion

  • cmake_template

    A template CMake project to get you started with C++ and tooling

  • Pitchfork

    Pitchfork is a Set of C++ Project Conventions

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

    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

    Parent of *-lite repositories, a migration path to post-C++11 features for pre-C++11 environments

  • xtd

    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

Libraries / Testing

  • Approval Tests for C++

    Native ApprovalTests for C++ on Linux, Mac and Windows

  • 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

  • Boost:UT

    C++20 μ(micro)/Unit Testing framework, single-header, without need for macros

  • Boost.Test

    Boost testing framework

  • Catch

    🔥 - A modern, C++-native, header-only, framework for unit-tests, TDD and BDD

  • clean-test

    A modern C++-20 testing framework

  • doctest

    🚀 - The fastest feature-rich C++11/14/17/20 single-header testing framework for unit tests and TDD

  • Fakeit

    C++ mocking made easy. A simple yet very expressive, headers only library for c++ mocking

  • Googletest

    Google Testing and Mocking Framework

  • Mull

    Practical mutation testing tool for C and C++

  • rapidcheck

    QuickCheck clone for C++

  • snitch

    Lightweight C++20 testing framework

Libraries / Benchmarking

  • Celero

    C++ Benchmark Authoring Library/Framework

  • Google Benchmark

    🌟 - A microbenchmark support library

  • hayai

    the C++ benchmarking framework

  • Nonius

    A C++ micro-benchmarking framework. C++ Benchmark Authoring Library/Framework

  • nanobench

    Simple, fast, accurate single-header microbenchmarking functionality for C++11/14/17/20

Libraries / Logging

  • fmtlog

    A fmtlib-style logging library with latency in nanoseconds

  • spdlog

    Fast C++ logging library

  • loguru

    A lightweight and flexible C++ logging library

Libraries / Threading

  • concurrentqueue

    A fast multi-producer, multi-consumer lock-free concurrent queue for C++11

  • Cpp-Taskflow

    Modern C++ Parallel Task Programming Library

  • Junction

    Concurrent data structures in C++

  • MPMCQueue

    A bounded multi-producer multi-consumer lock-free queue written in C++11

  • SPSCQueue

    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

    Smart queue that executes tasks in threadpool-like manner (serial / concurrent) in C++11

  • concurrencpp

    A general concurrency library containing tasks, executors, timers and C++20 coroutines to rule them all

Libraries / Parsing & Serialization

  • json

    🥇 - JSON for Modern C++

  • jsoncpp

    A C++ library for interacting with JSON

  • toml++

    A header-only C++17 library for parsing TOML v0.5.0 and later

  • tinytoml

    -A header only C++11 library for parsing TOML

  • yaml-cpp

    A YAML parser and emitter in C++

  • cpptoml

    A header-only library for parsing TOML configuration files

  • cereal

    A C++11 library for serialization

  • cista

    A C++17 library for high-performance zero-copy binary serialization

  • simdjson

    Accelerate the parsing of JSON per se using commonly available SIMD instructions

  • Boost.JSON

    A JSON library with robust support for custom allocators

  • hjson-cpp

    A C++11 library for reading and writing Hjson and/or JSON files

  • json_struct

    High performance, single header JSON parser, parsing directly to and from C++ structs

  • daw_json_link

    Fast, convenient JSON serialization and parsing in C++

Libraries / String formatting & templating

  • {fmt}

    Small, safe and fast formatting library

  • Inja

    A Template Engine for Modern C++

  • Mustache

    Mustache text templates in C++11

  • tinyformat.h

    Minimal, type safe printf replacement library for C++

  • pprint

    Pretty Printer for Modern C++

Libraries / Scripting

  • sol2

    C++ library binding to Lua

  • ChaiScript

    An easy to use embedded scripting language for C++

  • pybind11

    Seamless operability between C++11 and Python

Libraries / Web / HTTP

  • Beast

    HTTP and WebSocket built on Boost.Asio in C++11

  • cpprestsdk

    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

    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

    A C++14/17 based, high-performance HTTP application framework

  • oat++

    High-performance Web framework (C++11, zero-dependency)

  • pistache

    An elegant C++ REST framework

  • restbed

    Restbed framework brings asynchronous RESTful functionality to C++11 applications

Libraries / Database

  • mongo-cxx-driver

    C++ Driver for MongoDB

  • redox

    Modern, asynchronous, and wicked fast C++11 client for Redis

  • sqlite_orm

    powerful header only SQLite3 ORM library for C++14

  • sqlite3pp

    C++ wrapper of SQLite3 API

  • sqlpp11

    A type safe SQL template library for C++

  • libpqxx

    The official C++ client API for PostgreSQL

  • TinyORM

    Modern C++ ORM library

Libraries / BioC++

  • SeqAn

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

Libraries / Misc

  • ASAP

    header-only library to parse, display, operate and iterate on dates

  • BigIntegerCPP

    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

    High Performance Streams Based on Coroutine TS

  • cppitertools

    itertools (python) implementation for C++14

  • cxxopts

    Lightweight C++ command line option parser

  • date

    A date and time library based on the C++11/14/17

  • docopt.cpp

    docopt creates beautiful command-line interfaces

  • EnTT

    A header-only, fast and, reliable entity-component system (ECS) for modern C++

  • Font Chef

    A C99 and C++14 library to cook fonts and render text

  • HashLibPlus

    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

    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

  • 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

  • Wise Enum

    Static reflection for enums similar to Magic Enum but works with C++ 11/14/17

  • Nameof

    A header-only C++17 library provides nameof macros and functions to obtain the simple name of variable, type, function, macro, and enum

  • PEGTL

    Parsing Expression Grammar Template Library (C++11, header-only)

  • 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

  • SimpleBaseLib4CPP

    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

    Simple header only pattern matching for c++14

  • SRL-CPP

    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

    A header only interpolation library with 30+ easing functions

  • Vireo

    A lightweight and versatile video processing library by Twitter

  • indicators

    Activity Indicators for Modern C++

  • AssociatedEnum

    header-only library for C++ for enumerations with associated values

  • openFrameworks

    an open source C++ toolkit for creative coding

  • tabulate

    Table Maker for 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

    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

    C/C++/ObjC language server supporting cross references, hierarchies, completion and semantic highlighting, forked from cquery, which is under active development

  • 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

Tools / Dynamic analysis

  • sanitizers

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

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

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

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

Tools / Package management

  • Buckaroo

    Fully Decentralized Polyglot Package Manager for C++ and Friends

  • cget

    CMake package retrieval

  • conan

    C/C++ package manager

  • CPM

    A CMake script for setup-free cross-plattform dependency management

  • Hunter

    Cross-platform package manager for C++

  • vcpkg

    C++ Library Manager for Windows, Linux, and MacOS

  • xrepo

    A cross-platform C/C++ package manager based on Xmake

About

More related projects

Add a GitHub project

Missing a project or an awesome list? Paste its GitHub URL and we fetch it right away.