awesome-modern-cpp
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
- Consider the C++ Core Guidelines.
 - Never manually format code, use clang-format.
 - Build your code using CMake.
 - Test your code using Catch.
 - Also test using sanitized builds: AddressSanitizer, ThreadSanitizer and MemorySanitizer.
 - Use a fuzzer to test untrusted input: afl, libFuzzer, KLEE.
 
Books
- 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] - Using the C++ Concurrency Library
 - C++ Annotations (Frank B. Brokken) [C++11/14/17]
 
For a comprehensive guide to C++ books see the Stackoverflow Definitive C++ Book Guide and List.
Blogs
- Andrzej's C++ blog - Guidelines and thoughts about C++.
 - C++ Hints - Common mistakes and their solutions.
 - Embedded in Academia - John Regehr, Professor of Computer Science, University of Utah, USA.
 - Eric Niebler
 - 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?
 - Anthony Williams' blog
 
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
- C++ Questions Subreddit - A great place to get help.
 - C++ Samples - A repository of modern C++ samples.
 - C++ Subreddit - Discussions, articles, and news about the C++ programming language.
 - C++ Super-FAQ - The C++ Super-FAQ.
 - C++ reference - C++ reference.
 - C++11 FAQ
 - CppCast - The only podcast for C++ developers by C++ developers.
 - Stackoverflow C++11
 - Stackoverflow C++14
 - Stackoverflow C++
 - The C++ Programming Language - News, Status & Discussion about Standard C++.
 
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"
 - 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"
 
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的更多相关文章
- Modern Cpp记录
		
#include <iostream> # include <set> #include <chrono> #ifndef UNUSED #define UNUSE ...
 - 跨平台渲染框架尝试 - constant buffer的管理
		
1. Preface Constant buffer是我们在编写shader的时候,打交道最多的一种buffer resource了.constant表明了constant buffer中的数据,在一 ...
 - c++11   move构造函数和move operator 函数  学习
		
先看个代码吧!!!!!!!!!! #include <iostream> using namespace std; class A { public: A(){cout<<&q ...
 - nlohmann  最优秀的C++序列化工具库 详细入门教程
		
本文首发于个人博客https://kezunlin.me/post/f3c3eb8/,欢迎阅读最新内容! tutorial to use nlohmann json for serializing d ...
 - 2019阿里JVM组实习面经
		
面试质量非常高....非常高...高... 一面 自我介绍 看过hotspot哪些模块,模板解释器工作说一下,生成的native code放在哪,怎么处理safepoint的 说项目,实现了哪些字节码 ...
 - 转:C++ 智能指针的正确使用方式
		
转:https://www.cyhone.com/articles/right-way-to-use-cpp-smart-pointer/#comments C++11 中推出了三种智能指针,uniq ...
 - C++雾中风景番外篇4:GCC升级二三事
		
最近将手头上负责的项目代码从GCC 4.8.2升级到了GCC 8.2.(终于可以使用C++17了,想想后续的开发也是很美好啊~~)不过这个过程之中也遇到了一些稀奇古怪的问题,在这里做一个简单的记录,希 ...
 - ClickHouse源码笔记1:聚合函数的实现
		
由于工作的需求,后续笔者工作需要和开源的OLAP数据库ClickHouse打交道.ClickHouse是Yandex在2016年6月15日开源了一个分析型数据库,以强悍的单机处理能力被称道. 笔者在实 ...
 - 左值 lvalue,右值 rvalue 和 移动语义 std::move
		
参考文章: [1] 基础篇:lvalue,rvalue和move [2] 深入浅出 C++ 右值引用 [3] Modern CPP Tutorial [4] 右值引用与转移语义 刷 Leetcode ...
 - std::unique_ptr使用incomplete type的报错分析和解决
		
Pimpl(Pointer to implementation)很多同学都不陌生,但是从原始指针升级到C++11的独占指针std::unique_ptr时,会遇到一个incomplete type的报 ...
 
随机推荐
- android 建数据库 SQLite 存储sd 卡或者内存
			
android 创建数据库调用SQLiteOpenHelper,一般不直接操作SQLiteDatabase . 是通过SQLiteOpenHelper来获取 public class DBOpenHe ...
 - NIO - Selector源码分析
			
1. 背景 SelectableChannel对象的多路复用器. 可以通过调用Selector.open()方法创建Selector对象.Selector.open()方法会利用系统默认的Select ...
 - atitit.http get post的原理以及框架实现java php
			
atitit.http get post的原理以及框架实现java php 1. 相关的设置 1 1.1. urlencode 1 1.2. 输出流的编码 1 1.3. 图片,文件的post 1 2. ...
 - 221. Add Two Numbers II【medium】
			
You have two numbers represented by a linked list, where each node contains a single digit. The digi ...
 - Nginx日志过滤 使用ngx_log_if不记录特定日志
			
ngx_log_if是Nginx的一个第三方模块.它在Github上的描述是这样介绍的:ngx_log_if是一个独立的模块,允许您控制不要写的访问日志,类似于Apache的"CustomL ...
 - NYOJ 78  圈水池 (入门级凸包)
			
题目链接:nyoj 78 单调链凸包小结 题目讲解:本题考查的主要是凸包的用法,算是入门级的吧,当然前提是你接触过,平面几何: AC代码: #include<iostream> #inc ...
 - Android Screen Monitor
			
实现屏幕同步前提是安装有JDK和配置好ADB的环境变量 1.官方地址 http://code.google.com/p/android-screen-monitor/ 2.解压缩得到asm.jar 3 ...
 - vue 单文件组件
			
在很多vue项目中,我们使用vue.component来定义全局组件,紧接着用new Vue({el:'#container'})在每个页面内指定一个容器元素 这种方式在很多中小规模的项目中运作的很好 ...
 - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' 解决方法
			
1. 代码 SHOW VARIABLES LIKE 'character_set_%'; 查看一下 显示 +--------------------------+------------------- ...
 - FirstLetterUtil
			
package cn.edu.hbcf.common.utils; public class FirstLetterUtil { private static int BEGIN = 45217; p ...