Awesome Modern C++

A collection of resources on modern C++.

The goal is to collect a list of resouces 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

  • ACCU - The Conference for Developers.
  • C++ Now - A gathering of C++ experts and enthusiasts.
  • CppCon - The C++ Conference.
  • Meeting C++ - A independent C++ Conference.

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.
  • C++ Format - Small, safe and fast formatting library for C++.
  • 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++.
  • 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.
  • 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
  • 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.
  • 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++.
  • mongo-cxx-driver - C++ Driver for MongoDB.
  • mstch - A implementation of Mustache templates using modern C++.
  • Mustache - Mustache text templates in C++11.
  • Nonius - A C++ micro-benchmarking framework.
  • 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.
  • 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
  • sqlite_modern_cpp - Zero overhead C++14 wrapper for sqlite3.
  • 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.

Websites

Talks

Tools

  • American fuzzy lop - American fuzzy lop is a security-oriented fuzzer.
  • 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.
  • 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

Podcasts

  • CppCast - Podcast happening in and aroud C++.

About

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

A collection of resources on modern C++
http://awesomecpp.com
https://github.com/rigtorp/awesome-modern-cpp

awesome-modern-cpp的更多相关文章

  1. Modern Cpp记录

    #include <iostream> # include <set> #include <chrono> #ifndef UNUSED #define UNUSE ...

  2. 跨平台渲染框架尝试 - constant buffer的管理

    1. Preface Constant buffer是我们在编写shader的时候,打交道最多的一种buffer resource了.constant表明了constant buffer中的数据,在一 ...

  3. c++11 move构造函数和move operator 函数 学习

    先看个代码吧!!!!!!!!!! #include <iostream> using namespace std; class A { public: A(){cout<<&q ...

  4. nlohmann 最优秀的C++序列化工具库 详细入门教程

    本文首发于个人博客https://kezunlin.me/post/f3c3eb8/,欢迎阅读最新内容! tutorial to use nlohmann json for serializing d ...

  5. 2019阿里JVM组实习面经

    面试质量非常高....非常高...高... 一面 自我介绍 看过hotspot哪些模块,模板解释器工作说一下,生成的native code放在哪,怎么处理safepoint的 说项目,实现了哪些字节码 ...

  6. 转:C++ 智能指针的正确使用方式

    转:https://www.cyhone.com/articles/right-way-to-use-cpp-smart-pointer/#comments C++11 中推出了三种智能指针,uniq ...

  7. C++雾中风景番外篇4:GCC升级二三事

    最近将手头上负责的项目代码从GCC 4.8.2升级到了GCC 8.2.(终于可以使用C++17了,想想后续的开发也是很美好啊~~)不过这个过程之中也遇到了一些稀奇古怪的问题,在这里做一个简单的记录,希 ...

  8. ClickHouse源码笔记1:聚合函数的实现

    由于工作的需求,后续笔者工作需要和开源的OLAP数据库ClickHouse打交道.ClickHouse是Yandex在2016年6月15日开源了一个分析型数据库,以强悍的单机处理能力被称道. 笔者在实 ...

  9. 左值 lvalue,右值 rvalue 和 移动语义 std::move

    参考文章: [1] 基础篇:lvalue,rvalue和move [2] 深入浅出 C++ 右值引用 [3] Modern CPP Tutorial [4] 右值引用与转移语义 刷 Leetcode ...

  10. std::unique_ptr使用incomplete type的报错分析和解决

    Pimpl(Pointer to implementation)很多同学都不陌生,但是从原始指针升级到C++11的独占指针std::unique_ptr时,会遇到一个incomplete type的报 ...

随机推荐

  1. requireJS的匿名模块和命名模块的区别和最佳实践

    requirejs是一个简单的javascript框架,支持模块化编码和模块的异步载入. 在requireJS中模块能够分为:匿名模块和命名模块这2种. requireJS定义一个匿名模块 defin ...

  2. Python Excel 导入导出【转】

    一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境. 二.使用介绍 1.导入模块 import x ...

  3. VMware网络连接失败解决方法

    假如你碰到了VMware 网络被断开,明明已经分配了适配器,客户端却显示网络断开没有连接. 一. 可用恢复默认的方法重置所有网卡及服务. 如图片操作: 进主工具首页.点击: 虚拟网络编辑器 然后点击下 ...

  4. visitor设计模式记录

    数据类型通过枚举来区分是一种简单实用的做法. 缺点是使用的时候需要通过if .switch 去判断什么类型执行什么分支操作,说是缺点其实也要看具体场景.不过如果if代码多会导致代码很长是肯定的. 复杂 ...

  5. C. Beautiful Numbers

    C. Beautiful Numbers Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 524288/262144K (Java/Oth ...

  6. flask os.environ 的作用

    使用环境变量取值, 是为了增强系统的适应性, 在某些场景下, 设置环境变量比较方便. 假如, 你有一套代码, 部署在不同的系统中, 恰好这些系统有权限且很容易地设置环境变量, 那么, 这时候通过环境变 ...

  7. Windows的静态库使用步骤

    windows库程序: 1.静态库程序 - 运行时不独立存在,会被链接到可执行文件或者动态库中,目标程序的归档. 文件扩展名:LIB 2.动态库程序 - 运行时独立存在,不会被链接到可执行文件或其他动 ...

  8. CI cookie 存放数组

      #ci cookie 由于不能存放数组,所有必须序列化之后在存入数组中 #定义数组 $cookie_array=array( 'shop_id'=>$gid, 'shop_name'=> ...

  9. JavaWeb——监听器

    监听器简介 监听器是指专门用于在其他对象身上发生的事件或者状态改变进行监听和相应处理的对象,当被监听的对象发生变化时立即采取相应的行动. 例如我们要实现统计一个网站的在线人数,就可以在Web应用应用程 ...

  10. oracle11g卸载,10g之类版本通用

    鉴于oracle一些比较稀奇的问题,本人没碰到的不能帮忙解决的.而且比较着急赶时间的亲们,我就只能推荐先卸载在安装的办法了,这个方法一般用时也就1个小时到1个半小时之间,切记按步骤删除,别漏删了,不然 ...