C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off (Bjarne Stroustrup)
This opinioned document outlines several things to start with programming in C/C++
- STL tutorial
- Meta programming: A walk-through C++ metaprogramming and how to achieve more functionality with less effort.
- Compare-And-Swap: a synchronization technique with direct supports from CPU
- Cache line effect
- ReadWrite Lock, SeqLock
- Zero Copy, Efficient data transfer through zero copy
- What is a smart pointer and when should I use one?
- Lambdas
- Move semantics
- Building Command-Line and Server Applications with Poco
- Beautiful Native Libraries
- Build systems
- C++ Core Guidelines: The C++ Core Guidelines are a set of tried-and-true guidelines, rules, and best practices about coding in C++
- Poco: Versatile cross-platform C++ libraries with a network/internet focus. "The battery pack for C++."
- facebook/folly: An open-source C++ library developed and used at Facebook
- Boost ⚡️ - A large collection of generic C++ libraries.
- libcds: A C++ library of Concurrent Data Structures
- junction: Concurrent data structures in C++
- cameron314/concurrentqueue: A fast multi-producer, multi-consumer lock-free concurrent queue for C++11
- cameron314/readerwriterqueue: A fast single-producer, single-consumer lock-free queue for C++
- disruptor: disruptor concurency pattern in c++
- Catch2: A modern, C++-native, header-only, test framework for unit-tests, TDD and BDD - using C++11, C++14, C++17 and later
- google/googletest: Google Test
- mocking: The Google C++ mocking framework.
- facebook/rocksdb: A library that provides an embeddable, persistent key-value store for fast storage (A good replacement for sqlite)
- SimDB: A high performance, shared memory, lock free, cross platform, single file, no dependencies, C++11 key-value store
- gabime/spdlog: Super fast, header only, C++ logging library
- libevent
- libuv
- facebook/libphenom: An eventing framework for building high performance and high scalability systems in C.
- Qihoo360/evpp: A modern C++ network library for developing high performance network services in TCP/UDP/HTTP protocols
- facebook/proxygen: A collection of C++ HTTP libraries including an easy to use HTTP server
- facebook/wangle: Wangle is a framework providing a set of common client/server abstractions for building services in a consistent, modular, and composable way.
- grpc: An RPC library and framework
- facebook/fbthrift: Facebook's branch of Apache Thrift, including a new C++ server.
- jemalloc: jemalloc is a general purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support.
- yaml-cpp: A YAML configuration parser and emitter in C++
- fmtlib/fmt: A modern formatting library
- VsCode, How do I set up Visual Studio Code to compile C++ code?, Simple Solutions: Coding C and C++ with Visual Studio Code, clang-format
- For Cmake-based projects, you may use CLion from JetBrains
- The C++ Programming Language (Bjarne Stroustrup) [C++11]
- Effective Modern C++ (Scott Meyers) [C++11/14]
- C++ Concurrency in Action (Anthony Williams) [C++11/14/17] - Using the C++ Concurrency Library
- Modern C++ Design: Generic Programming and Design Patterns Applied
- Awesome Modern C++
- Awesome C++
- CMake Examples: A collection of as simple as possible, modern CMake projects