ゆなこんブログ

ゆなこんぴゅーたー (Yuna Computer) の公式ブログ

Regular Typesとは

Regular Types の訳

C++ の Regular Types ってきいたことあるでしょうか?

私はありませんでした。 そのため Regular Types の訳も知りませんし、軽くググった程度では分かりませんでした。 "Regular Expression" は「正規表現」あるいは「正則表現」などと訳されることが多いので、「正規型」あるいは「正則型」などと訳せばいいのでしょうか? あるいは音訳して「レギュラー型」と訳すこともできます。 すぐに Regular Types の定義を説明しますが、「標準型」「通常型」あたりが定義の意味に近いかもしれません。

この記事では訳すことを諦め Regular Types のまま説明します。

Regular Types の定義

少なくとも C++ Draft n4659 内には Regular Types という語は出てきません。 今後コンセプト (concepts) の仕様が固まれば、規格の中にも Regular Types という語が現れるかもしれません。

Regular Types については Alexander A. Stepanov が最初に提唱したようです。

Regular Types とは組み込み型と同じように振る舞う型のことを言います。

組み込み型 (built-in types) は次のような型です。int 型などを思い浮かべてみてください。

  • T a; デフォルトコンストラクトできる
  • T a = b; コピーコンストラクトできる
  • ~T(a); デストラクトできる
  • a = b; 代入できる
  • a == b 等値比較できる
  • a != b 不等値比較できる
  • a < b などで順序付けできる

それで組み込み型と同じこれらの特徴を持っている型を Regular Types と言います。

C++11 以降

C++11 以降は組み込み型と Regular Types には次の操作も含められるようです。

  • T a = std::move(b); ムーブコンストラクトできる
  • a = std::move(b); ムーブ代入できる
  • swap(a, b) Swap操作ができる

参考資料