The Modern C++ Challenge 第2章

The Modern C++ Challenge 第1章 の続きです。

今回は第2章に挑戦します。

まずは目次を読む。
目次からは内容が推測できない。

第2章 言語機能

15 IPv4 データ型
16 範囲内の IPv4 アドレスの列挙
17 基本操作による 2D 配列の作成
18 任意の数の引数を持つ最小関数
19 コンテナへの値の範囲の追加
20 コンテナーのいずれか、すべて、なし
21 システムハンドルラッパー
22 さまざまな温度スケールのリテラル

問題文も読む。

問15. IPv4 データ型
IPv4 アドレスを表すクラスを作成します。
このようなアドレスをコンソールから読み書きできるようにするために必要な関数を実装します。
ユーザーは、127.0.0.1 や 168.192.0.100 などのドット形式で値を入力できる必要があります。
これは、IPv4 アドレスを出力ストリームにフォーマットする形式でもあります。

ソースコードを斜め読みする。
C++ の基本機能を使ってクラスを作成している。
演算子オーバーロードを実装している。

次に実行する。
コンパイルエラーになるものがある。
CMakeLists.txt を修正する。

一通り実行できたので、
Modern C++ に着目してソースコードを読む。

第17問にて constexpr 使っている。

cpprefjp: constexpr

第18問にて std::less を使っている。

cpprefjp: std::less

第2章 のソースコードGithub に公開した。
https://github.com/ohwada/The-Modern-Cpp-Challenge/tree/main/The-Modern-Cpp-Challenge/Chapter02