awesome modern cpp

2025-12-10 0 399


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.

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 (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).

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

Community

Find the latest C++ news and updates:

  • News, Status & Discussion about Standard C++.

Listen to the latest C++ podcasts:

  • CppCast (YouTube, Twitter) – The first podcast by C++ developers for C++ developers!
  • Cpp.chat (YouTube, Twitter) – Comments on c++ and issues of interest to c++ programmers.
  • C++ Weekly – Educational videos by Jason Turner.

Read the latest C++ standard proposals:

  • C++ Standards Committee Papers.

Discuss everything related to C++:

  • r/cpp – The C++ subreddit.
  • C++ Slack – The C++ Slack workspace.
  • CoreHard Telegram group.

Ask your C++ questions:

  • r/cpp_questions – A subreddit for C++ questions and answers.
  • Stackoverflow C++ / C++11 / C++14 / C++17 / C++20 – Stackoverflow questions about C++.

Maybe your question was already answered in a FAQ?:

  • C++ Super-FAQ.
  • C++11 FAQ.

Go to one of the many C++ conferences:

  • List of upcoming and past C++ conferences.

Find C++ user groups:

  • Meeting C++ list of user groups.
  • List of user groups in the C++ Super-FAQ.
  • C/C++ meetups.
  • Search for channels starting with #ug in the C++ Slack.

Talks

TODO curate list of good talks on how to simplify code using C++11/17/20 features

Start with SG20 Education and Recommended Videos for Teaching C++.

  • 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 (slides)
  • code::dive conference 2015 – Andrei Alexandrescu – Writing Fast Code I (slides)
  • code::dive conference 2015 – Andrei Alexandrescu – Writing Fast Code II (slides)
  • 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\”

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?

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!

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

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.

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.

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.

Benchmarking

Libraries and frameworks for creating micro-benchmarks.

  • 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

Logging

  • fmtlog – A fmtlib-style logging library with latency in nanoseconds.
  • spdlog – Fast C++ logging library.
  • loguru – A lightweight and flexible C++ logging library

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.

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

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

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.

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.

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.

BioC++

  • SeqAn – The modern C++ library for sequence analysis (C++17, C++20).

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 header.
  • 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

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.

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.

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.

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.

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

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

  • rigtorp.se
  • erik@rigtorp.se
  • github.com/rigtorp
  • twitter.com/rigtorp
  • linkedin.com/in/rigtorp

下载源码

通过命令行克隆项目:

git clone https://github.com/rigtorp/awesome-modern-cpp.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 编程相关 awesome modern cpp https://www.zuozi.net/33600.html

Open3D
上一篇: Open3D
MyTinySTL
下一篇: MyTinySTL
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务