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

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

原文地址:https://www.cnblogs.com/findumars/p/10258337.html

时间: 2024-08-02 09:38:05

awesome-modern-cpp的相关文章

Modern Cpp记录

#include <iostream> # include <set> #include <chrono> #ifndef UNUSED #define UNUSED(v) (void)(v) #endif typedef std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> time_point; //void logg(const time_point&a

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

1. Preface Constant buffer是我们在编写shader的时候,打交道最多的一种buffer resource了.constant表明了constant buffer中的数据,在一次draw call的执行过程中都是不变的:而在不同的draw call之间,我们可以修改其中的数据.它是我们把数据从CPU传递到GPU最常见的方法.constant buffer的概念和定义就不在这里赘述了,鄙文主要讨论如何优雅的管理constant buffer. 2. How to creat

CPP之全面总结(上)

OOP之类和对象 1. this指针的引入 每个成员函数都有一个额外的隐含的形参,这个参数就是this指针,它指向调用对象的地址.默认情况下,this的类型是指向类类型非常量版本的常量指针.可以表示成如下伪代码形式: /* 假设现在有一个类Sales_data,以及其非常量Sales_data类型对象,则该隐式的this指针可以写成如下伪代码形式 */ Sales_data *const this = &total; this指针一般用于解决重名问题和返回自身的值或者引用.例如: struct

effective modern C++读书笔记

类型推导: 1.ParamType是reference或pointer,不是universal reference 有引用则忽略引用,其余部分匹配T template <typenmae T> void f(T& param); int x = 27; const int cx =x; oonst int& rx = x; f(x);//T is int, paramtype is int& f(cx);//T is const int, paramtype is co

&lt;&lt;Modern CMake&gt;&gt; 翻译 2.4 项目目录结构

<<Modern CMake>> 翻译 2.4 项目目录结构 本节内容有点跑题.但我认为这是一个很好的方法. 我将告诉你如何规划项目的目录. 这是基于惯例,但将帮助您: 轻松阅读其他按照相同模式的项目, 避免导致冲突的模式, 避免混淆和使构建变得复杂. 首先,如果您的项目被叫做 project,包含一个链接库叫做 lib,一个可执行文件叫做 app, 那么您的文件目录应该类似以下结构: - project - .gitignore - README.md - LICENCE.md

bzoj 4780: [Usaco2017 Open]Modern Art 2

4780: [Usaco2017 Open]Modern Art 2 Time Limit: 10 Sec  Memory Limit: 128 MB Description Having become bored with standard 2-dimensional artwork (and also frustrated at others copying her w ork), the great bovine artist Picowso has decided to switch t

Start – Modern minimalist OpenCart 2.X 自适应主题模板 ABC-0573-03

模板特性 兼容浏览器IE9, IE10, IE11, Firefox, Safari, Opera, Chrome OpenCart版本OpenCart 2.0.x, OpenCart 1.5.x, OpenCart 1.5.6.x, OpenCart 1.5.5.x, OpenCart 1.5.5 包含文件Layered PSD, PHP Files, CSS Files, JS Files START – MODERN MINIMALIST OPENCART 2.X 自适应主题模板 ABC-

函数模版和主函数分别在.h .cpp中(要包含.cpp)

Complex.h #pragma once #include<iostream> using namespace std;//这句还必须加,要不然致错,不懂为啥呢 template <typename T> class Complex { public: Complex( T a); ~Complex(); Complex operator + (Complex & c1); public: friend ostream & operator << &

QThread的源码(直接搜索&quot;thread.cpp&quot;即可,或者在github里搜)

void QThread::run() { (void) exec(); } int QThread::exec() { Q_D(QThread); QMutexLocker locker(&d->mutex); d->data->quitNow = false; if (d->exited) { d->exited = false; return d->returnCode; } locker.unlock(); QEventLoop eventLoop; i

[C++11] Effective Modern C++ 读书笔记

本文记录了我读Effective Modern C++时自己的一些理解和心得. item1:模板类型推导 1)reference属性不能通过传值参数传入模板函数.这就意味着如果模板函数需要一个reference类型的参数,必须在模板声明中将其声明为reference,否则,即使使用一个reference类型的变量调用模板函数,类型推导的结果将不带reference属性. 2)constant和volatile属性也不能通过传值参数传入模板函数,但是可以通过reference参数传入这些属性. 3