Skip to content

Latest commit

 

History

History
218 lines (148 loc) · 11.7 KB

REFERENCES.md

File metadata and controls

218 lines (148 loc) · 11.7 KB

C++

  1. Prototypes of member access operators
  2. C++17 features
  3. How I Declare My class And Why
  4. Changes between C++11 and C++14
  5. Changes between C++14 and C++17 DIS

Containers

  1. A faster std::vector
  2. Immutable containers

Templates

  1. Partial Specialization and Tags
  2. Variadic templates in C++

Idioms

  1. CRTP - Curiously recurring template pattern
  2. Barton–Nackman trick

std::chrono

  1. Compose function to measure function call times

std::iterator

  1. Iterators are also part of the C++ zero cost abstractions
  2. An iterator_facade in C++20

Smart pointer (std::shared_ptr, std::unique_ptr)

  1. Using C++11’s Smart Pointers

rvalue, value categories

  1. C++ Rvalue References Explained
  2. Value Categories in C++17
  3. Understanding the meaning of lvalues and rvalues in C++
  4. Pass by Reference vs Pass by Value in C++
  5. One-Shot Learning of C++ r-value, &&, and Move

Return Value Optimization (RVO), Named RVO (NRVO) and Copy-Elision

  1. Return Value Optimization

STL

  1. STL & Generic Programming: Writing Your Own Iterators
  2. Collected C++17 Headers for C++11/14 (any, optional, string_view, variant)

Exceptions, error handling

  1. Exception handling in constructors
  2. Your own error code
  3. Your own error condition
  4. Using error codes effectively

32/64-bits

  1. Перенос Linux-приложений на 64-разрядные системы
  2. 64-Bit Transition Guide for Cocoa Touch. Major 64-Bit Changes
  3. Модель данных

Unicode

  1. UTF-8, UTF-16, UTF-32 & BOM
  2. RFC-2781. UTF-16, an encoding of ISO 10646
  3. UTF-8 Everywhere
  4. Awesome Unicode (Перевод)

Compilers

  1. Predefined macros. Visual Studio 2010

Generic, Alignment

  1. Generic: Typelists and Applications
  2. Generic: Discriminated Unions (I)
  3. Generic: Discriminated Unions (II)
  4. Determining the alignment of C/C++ structures in relation to its members
  5. Implementing alignof
  6. Style Case Study #3: Construction Unions (Herb Sutter)
  7. std::vector of Aligned Elements
  8. Особенности выравнивания данных в структурах

Floating point parsing / arithmetic

  1. How to Define NaN (Not-a-Number) on Windows
  2. How to use nan and inf in C?
  3. IEEE 754 - Standard binary arithmetic float
  4. Comparing Floating Point Numbers, 2012 Edition
  5. How do I handle byte order differences when reading/writing floating-point types in C?
  6. Fast float parsing in practice (Reddit)

Endianness

  1. Endianness
  2. Understanding Big and Little Endian Byte Order
  3. Writing endian-independent code in C
  4. Endianness: Big and Little Endian Byte Order (with list of Processor Endianness)
  5. Something about endianness at "Serialization—How to Pack Data"

Pimpl

  1. The Fast Pimpl Idiom
  2. Why every C++ developer should know about the pimpl idiom pattern

SFINAE

  1. Compiler Tricks: SFINAE and nice messages

Functor

  1. Functors in C++ - Part I
  2. Functors in C++ - Part II

Undefined Behavior (UB)

  1. Undefined Behavior in 2017

Logger libraries

  1. Сравнение библиотек логирования
  2. blackhole - Yet another logging library
  3. plog - Portable, simple and extensible C++ logging library

Data structures

  1. C++ implementation of a fast hash map and hash set using robin hood hashing

Database, ORM

  1. SQLite ORM
  2. SQLAPI++ Library
  3. SOCI - The C++ Database Access Library
  4. Wt::Dbo
  5. sqlite3

CLI

  1. Docopt
  2. Optional
  3. cxxopts - Lightweight C++ command line option parser
  4. argagg - A simple C++11 command line argument parser
  5. Boost.Program_options
  6. Clara - A simple to use, composable, command line parser for C++ 11 and beyond

File system

  1. Filesystem library (cppreference.com)

Regex

  1. Regular expressions library (cppreference.com)
  2. Regex (cplusplus.com)

Reflective enums

  1. wise_enum
  2. Better Enums
  3. Meta Enum - Static reflection on enums in C++17

JSON

  1. JSON-RPC 2.0 Specification

HTTP / RTPS

  1. Hypertext Transfer Protocol -- HTTP/1.0
  2. Hypertext Transfer Protocol -- HTTP/1.1
  3. Real Time Streaming Protocol (RTSP)
  4. Real-Time Streaming Protocol Version 2.0
  5. HTTP Made Really Easy
  6. PicoHTTPParser
  7. nghttp2 - HTTP/2 C Library
  8. The C++ Network Library Project
  9. Microsoft C++ REST SDK 10.Yet Another HTTP Library

Software development principles

  1. DRY (Don't repeat yourself)
  2. SOLID (1)
  3. SOLID (2)
  4. FIRST

Timer

  1. Hashed and Hierarchical Timing Wheels: Data Structures for the Efficient Implementation of a Timer Facility

Misc

  1. Embedding resource files in a C++ program binary on Linux/*NIX
  2. Embedding a File in an Executable, aka Hello World, Version 5967

Memory allocators

  1. tcmalloc
  2. jemalloc
  3. mimalloc

Calendar

  1. Julian day
  2. The Julian Period
  3. Julian Day Numbers
  4. Julian Day Calculator
  5. Calendar generator printing a full calendar for any year source code
  6. Julian Day and Civil Date Calculator

UUID

  1. UUID версии 7, или как не потеряться во времени при создании идентификатора
  2. ULID - Universally Unique Lexicographically Sortable Identifier
  3. ULID - C++ port
  4. New UUID Formats