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的报 ...
随机推荐
- Atitit.二维码功能的设计实践 attilax 总结
Atitit.二维码功能的设计实践 attilax 总结 1.1. 二维码要实现的功能1 1.2. 现有二维码功能设计不足的地方(待改进)1 1.3. 二维码组件1 1.4. Java版 zxing ...
- JQ集合
获取所有id以a开头的div$("div[id^='a']") $('div').last() $('#item1') <div id='select'>点击这里< ...
- CSS Sprites的概念、原理、适用范围和优缺点
CSS Sprites概念 CSSSprites在国内很多人叫css精灵,是一种网页图片应用处理方式.它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片就 ...
- extjs经典的增删改查
首先,编辑一下yepnope,生成yepnope.jsp,如下: <%@ page language="java" pageEncoding="UTF-8" ...
- flume+kafka+storm打通过程
0.有的地方我已经整理成脚本了,有的命令是脚本里面截取的 1.启动hadoop和yarn $HADOOP_HOME/sbin/start-dfs.sh;$HADOOP_HOME/sbin/start- ...
- 2016-2017 ACM-ICPC CHINA-Final Ice Cream Tower 二分+贪心
/** 题目:2016-2017 ACM-ICPC CHINA-Final Ice Cream Tower 链接:http://codeforces.com/gym/101194 题意:给n个木块,堆 ...
- 严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderList
最近在用idea部署war文件的时候,总是出现了部署失败的错误,刚开始并没有在意,但是现在次数越来越多了,不得不在意了,然后就在百度上搜,然后就有了各种说法 1,错误的信息是: One or more ...
- Have your GDX app run in the web browser
https://code.google.com/p/libgdx-users/wiki/Applets—————————————————————————————————————————————— Ha ...
- spring mvc 3.0 实现文件上传功能
http://club.jledu.gov.cn/?uid-5282-action-viewspace-itemid-188672 —————————————————————————————————— ...
- 圆角带箭头的提示框css实现
css是一个很强大的东西,很多网页效果,我们可以通过css直接实现.今天给大家分享的是一个用css实现的圆角带箭头的提示框. 效果如下图: 这一个样式主要涉及到了css的边框样式border的运用和定 ...