Chapter 01: Towards Modern C++

Chapter 01: Towards Modern C++ についてのノート。

本書著者が用いているコンパイラー clang++ のオプション -std=c++2a は C++20 相当だと思っていいだろう。

読者ノート

私の g++ による動作確認コマンドを記す。Visual Studio Code の .vscode/tasks.json のコマンドラインオプション配列に次のコマンドラインと同等の引数を指定しておく:

g++ -fdiagnostics-color=always \
    -g -Werror -Wall -Wextra -ansi -pedantic -std=c++17 \
    ${file} \
    -latomic \
    -o ${fileDirname}/${fileBasenameNoExtension}

これでコンパイルが通らないコードが現れたら -std=c++20 にすればいいだろう。

1.1 Deprecated Features

非推奨機能とは、C++11 以降にそうなったと解釈する。私が心得るべき項目だけ挙げる:

  • auto_ptr は非推奨。代えて unique_ptr を用いる。

  • クラスがデストラクターを持つ場合、そのクラスがコピーコンストラクターやコピー代入演算子を生成するプロパティーは非推奨。

  • 旧式の引数バインディングは非推奨。

1.2 Compatibilities with C

C++ と C を混ぜて使うときの注意点が記されている。もう必要ない。

Further Readings

A Tour of C++ (2nd Edition) Bjarne Stroustrup

Stroustrup 先生の著述には目を通さぬ手はないだろう。

C++ compiler support - cppreference.com

この参考文献はもう一度登場する。

Incompatibilities Between ISO C and ISO C++

2001 年の資料。C99 と C++98 との比較。