ぷろみん

プログラミング的な内容を扱ってます

C++の難しめな用語集

概要

先日、言いたい用語がすぐに出てこなかったので備忘録を作った。私が学習するのが遅かったり難しかったものを集めた。
その特性から多くは語らないのでググって。

Return Value Optimization (RVO)

  • Named Return Value Optimization(NRVO)

データ指向設計 (Data Oriented Design)

  • キャッシュライン

Perfect Forwarding

引数と全く同じ型を伝搬させるという説明が一番分かりやすかった。

universal reference

  • Rvalue
  • Lvalue

Template MetaProgramming(TMP)

メインの機能はconceptに代替されそう。

  • Substitution Failure Is Not An Error(SFINAE)

Type Erasure

Argument Dependent Lookup(ADL)

安易にusing namespaceしてると引っかかるやつ。

unqualified name look up

Unqualified name lookup - cppreference.com

One Definition Rule(ODR)

  • ODR違反
  • odr-use
  • リンケージ

Application Binary Interface(ABI)

C++ではないが。

Most vexing parse

レイアウト

  • Plain Old Data(POD) C++20からtrivial classとして扱う
  • standard-layout class
  • trivial class

Rust

Rustも同じレベルのプログラミングができるので、Rustの概念を用いてC++の概念を説明しても良いはず。

  • LifeTime
  • Ownership

規格

C++er は“合法”だとか“違法”だとか言いたくて仕方がないけれど、結局どういう意味? それより適合・適格・○○動作・○○規則・診断不要いろいろの関係が謎

ガイドライン

CppCoreGuidelines

  • Guideline Support Library (GSL)