Skip to content

Commit ab8af61

Browse files
基本クラス/基本型 -> 基底クラス (#612)
一部 underlying type を基底型としていたため、これを訳語表に追記
1 parent 75071b5 commit ab8af61

31 files changed

+50
-49
lines changed

implementation-status.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@
118118
| [`[[fallthrough]]`属性](/lang/cpp17/fallthrough.md) | `case`節で`break``return`を書かなかった場合に、それが意図したフォールスルーであることをコンパイラに伝える属性 | 7 | 3.9 | 18.0 | 2017 |
119119
| [`[[nodiscard]]`属性](/lang/cpp17/nodiscard.md) | 関数の戻り値を無視してはならないことをユーザーに伝える属性 | 4.8からは`[[gnu::warn_unused_result]]`を使用すること<br/> 7からサポート | 3.9 | 18.0 | 2017 Update 3 |
120120
| [`[[maybe_unused]]`属性](/lang/cpp17/maybe_unused.md) | 使用しない可能性がある変数であることをコンパイラに伝える属性 | 4.8からは`[[gnu::unused]]`を使用すること<br/> 7からサポート | 3.9 | 18.0 | 2017 Update 3 |
121-
| [基本クラスのメンバ変数を集成体初期化するための波カッコを省略できるようにする][P0017R1] | 基本クラスのメンバを集成体初期化するために`derived d {{42}};`の代わりに`derived d {42};`と書けるようにする | 7 | 3.9 | No | 2017 Update 7 |
121+
| [基底クラスのメンバ変数を集成体初期化するための波カッコを省略できるようにする][P0017R1] | 基底クラスのメンバを集成体初期化するために`derived d {{42}};`の代わりに`derived d {42};`と書けるようにする | 7 | 3.9 | No | 2017 Update 7 |
122122
| [ラムダ式を`constexpr`として使用できるようにする](/lang/cpp17/constexpr_lambda.md) | ラムダ式の関数オブジェクトが定数式の文脈で使用された場合に、それがコンパイル時に評価されるようにする | 7 | 5 | No | 2017 Update 3 |
123123
| [範囲for文のための`begin()``end()`関数が、異なる型を返すことを許可](/lang/cpp17/generalizing_the_range-based_for_loop.md) | `begin()``end()`が異なるイテレータ型を返せるようにすることで、終端イテレータを定義しやすくする | 6 | 3.9 | 18.0 | 2017 |
124124
| [ラムダ式での`*this`のコピーキャプチャ](/lang/cpp17/lambda_capture_of_this_by_value.md) | キャプチャリストに`*this`を指定することで、`*this`をコピーキャプチャする | 7 | 3.8 | No | 2017 Update 3 |
@@ -140,7 +140,7 @@
140140
| [if文とswitch文の条件式と初期化を分離](/lang/cpp17/selection_statements_with_initializer.md) | `if (init; condition)`のように初期化と条件式を分けて記述できるようにする | 7 | 3.9 | 18.0 | 2017 Update 3 |
141141
| [参照メンバをもつクラスの置き換え](/lang/cpp17/replacement_of_class_objects_containing_reference_members.md) | 参照型メンバや`const`データメンバを含むクラスについてこれまで結果は未定義とされていた配置`new`によるオブジェクトの置き換えを条件付きで可能とする | No | No | No | 2017 Update 7 |
142142
| [非推奨だった例外仕様を削除](/lang/cpp17/remove_deprecated_exception_specifications.md) | `noexcept`が入ったことによって非推奨になった`throw`キーワードによる例外仕様を削除 | 7 | 4 | No | 2017 Update 5 |
143-
| [using宣言でのパック展開](/lang/cpp17/pack_expansions_in_using.md) | パラメータパックの型を基本クラスとして指定した場合に`using`宣言に基本クラスのパラメータパックを指定できるようにする | 7 | 4 | No | 2017 Update 7 |
143+
| [using宣言でのパック展開](/lang/cpp17/pack_expansions_in_using.md) | パラメータパックの型を基底クラスとして指定した場合に`using`宣言に基底クラスのパラメータパックを指定できるようにする | 7 | 4 | No | 2017 Update 7 |
144144
| [クラステンプレート引数の推論仕様を調整][P0512R0] | | No | No | No | 2017 Update 7 |
145145
| [Committee Draftに対するNational Body Commentへの対応][P0490R0] | | - | - | - | - |
146146
| [テンプレートテンプレート引数のマッチングにおいて、互換性のあるテンプレートを除外][P0522R0] | | 7 | 4 (partial) | No | 2017 Update 5 |

lang/cpp11.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ C++11とは、2011年8月に改訂され、ISO/IEC 14882:2011で標準規格化
3535
| [関数の`default``delete`宣言](cpp11/defaulted_and_deleted_functions.md) | 自動定義される特殊関数の制御 |
3636
| [移譲コンストラクタ](cpp11/delegating_constructors.md) | コンストラクタから他のコンストラクタに処理を移譲する |
3737
| [非静的メンバ変数の初期化](cpp11/non_static_data_member_initializers.md) | メンバ変数を、宣言と同時に初期値指定する |
38-
| [継承コンストラクタ](cpp11/inheriting_constructors.md) | 基本クラスのコンストラクタを継承する |
38+
| [継承コンストラクタ](cpp11/inheriting_constructors.md) | 基底クラスのコンストラクタを継承する |
3939
| [`override``final`](cpp11/override_final.md) | メンバ関数のオーバーライド指定、および派生クラスでのオーバーライドの禁止を指定する |
4040
| [明示的な型変換演算子のオーバーロード](cpp11/explicit_conversion_operator.md) | 明示的な型変換が行われる場合にのみ呼び出される演算子をオーバーロードできるようにする |
4141
| [`friend`宣言できる対象を拡張](cpp11/extend_friend_targets.md) | テンプレートパラメータや型の別名を`friend`宣言する |

lang/cpp11/attributes.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ C++11で採用されたもの以外で検討された以下の機能は、属性
148148
- 関数が同じ引数に対して同じ戻り値を返すことを明示する`pure`属性
149149
- `if`文や`switch文`の`case`に指定する条件式のヒット率が高いことを指示する`probably`属性
150150
- 関数が非推奨であることを指示する`deprecated`属性
151-
- 基本クラスによって関数を隠蔽しないことを明示する`not_hiding`属性
151+
- 基底クラスによって関数を隠蔽しないことを明示する`not_hiding`属性
152152
- ポインタの所有者(解放する責任を持つユーザー)であることを明示する`owner`属性
153153
154154

lang/cpp11/constexpr.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,8 @@ constexpr int f(bool b)
113113
- `constexpr`コンストラクタのパラメータの型は、[リテラル型](/reference/type_traits/is_literal_type.md)でなければならない。
114114
- `constexpr`コンストラクタには、関数`try`ブロックは使用できない
115115
- `constexpr`コンストラクタの本体は、空でなければならない
116-
- 仮想基本クラスを持ってはならない
117-
- 基本クラス、および非静的メンバ変数は、メンバ初期化子を使用して初期化しなければならない
116+
- 仮想基底クラスを持ってはならない
117+
- 基底クラス、および非静的メンバ変数は、メンバ初期化子を使用して初期化しなければならない
118118

119119

120120
### constexprメンバ関数

lang/cpp11/initializer_lists.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ int main()
115115
};
116116
```
117117
118-
- 基本クラスやメンバの初期化子
118+
- 基底クラスやメンバの初期化子
119119
120120
```cpp
121121
struct Y : X {

lang/cpp11/ref_qualifier_for_this.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ int main()
6565
};
6666
```
6767

68-
- 仮想関数は、基本クラスと派生クラスで、同じ参照修飾子を持たなくてはならない
68+
- 仮想関数は、基底クラスと派生クラスで、同じ参照修飾子を持たなくてはならない
6969

7070

7171
##

lang/cpp11/unrestricted_unions.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ hello
5454
- 共用体の非静的メンバ変数として定義されている非自明なコンストラクタおよびデストラクタを持つ型のオブジェクトに対しては、配置`new`構文でオブジェクトを構築し、明示的にデストラクタを呼び出す必要がある
5555
- 共用体には、参照のメンバ変数は保持できない
5656
- 共用体は、継承に関連する機能を使用できない
57-
- 共用体は基本クラスを持ってはならない
58-
- 共用体は基本クラスになってはならない
57+
- 共用体は基底クラスを持ってはならない
58+
- 共用体は基底クラスになってはならない
5959
- 共用体は仮想メンバ関数を持てない
6060

6161

lang/cpp11/variadic_templates.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ hello
262262
Person person = { args... };
263263
```
264264
265-
- 継承時の基本クラスリストの指定
265+
- 継承時の基底クラスリストの指定
266266
267267
```cpp
268268
template <class... Bases>

lang/cpp17.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ C++17以降、言語の策定にship train modelというリリース体制が
3838
| [参照メンバをもつクラスの置き換え](cpp17/replacement_of_class_objects_containing_reference_members.md) | 参照型メンバや`const`データメンバを含むクラスについてこれまで結果は未定義とされていた配置`new`によるオブジェクトの置き換えを条件付きで可能とする |
3939
| [`enum class`変数の初期値として整数を指定する際の規則を調整](cpp17/construction_enum_class_values.md) | キャストを使用することなく整数を初期値として使用し、`E e{0};`のような初期化を許可 |
4040
| [アライメント指定されたデータの動的メモリ確保](cpp17/dynamic_memory_allocation_for_over-aligned_data.md) | `operator new``operator delete`でアライメント値を取得できるようにする |
41-
| [集成体初期化の拡張](cpp17/extension_to_aggregate_initialization.md) | 集成体初期化で基底型も入れ子に集成体初期化可能になる |
41+
| [集成体初期化の拡張](cpp17/extension_to_aggregate_initialization.md) | 集成体初期化で基底クラスも入れ子に集成体初期化可能になる |
4242

4343

4444
### 制御構文
@@ -68,7 +68,7 @@ C++17以降、言語の策定にship train modelというリリース体制が
6868
| [クラステンプレートのテンプレート引数推論](cpp17/type_deduction_for_class_templates.md) | コンストラクタの引数からクラスのテンプレート引数を推論できるようにする |
6969
| [非型テンプレートパラメータの`auto`宣言](cpp17/declaring_non-type_template_arguments_with_auto.md) | `template <auto x>`とすることで、`X<3>;` `X<true>;` `X<'a'>`のように定数を受け取りやすくする |
7070
| [全ての非型テンプレート引数の定数式評価を許可](cpp17/allow_constant_evaluation_for_all_non-type_template_arguments.md) | ポインタの定数式評価として、配列からポインタへの変換や、関数から関数ポインタへの変換などを許可 |
71-
| [`using`宣言のパック展開](cpp17/pack_expansions_in_using.md) | パラメータパックの型を基本クラスとして指定した場合に、using宣言に基本クラスのパラメータパックを指定できるようにする |
71+
| [`using`宣言のパック展開](cpp17/pack_expansions_in_using.md) | パラメータパックの型を基底クラスとして指定した場合に、using宣言に基底クラスのパラメータパックを指定できるようにする |
7272
| [変数テンプレートのデフォルトテンプレート引数を許可](cpp17/allow_default_template_arguments_of_variable_templates.md) | 変数テンプレートのテンプレートパラメータがデフォルト引数を持つことを許可する |
7373

7474

@@ -87,7 +87,7 @@ C++17以降、言語の策定にship train modelというリリース体制が
8787
|----------|------|
8888
| [入れ子名前空間の定義](cpp17/nested_namespace.md) | `namespace A::B {}`のように、入れ子の名前空間を簡単に定義できるようにする |
8989
| [名前空間と列挙子への属性付加を許可](cpp17/attributes_for_namespaces_and_enumerators.md) | 名前空間の定義と、列挙型の各要素の定義に、属性を付けられるようにする |
90-
| [`using`宣言のパック展開](cpp17/pack_expansions_in_using.md) | パラメータパックの型を基本クラスとして指定した場合に、using宣言に基本クラスのパラメータパックを指定できるようにする |
90+
| [`using`宣言のパック展開](cpp17/pack_expansions_in_using.md) | パラメータパックの型を基底クラスとして指定した場合に、using宣言に基底クラスのパラメータパックを指定できるようにする |
9191

9292

9393
### 例外

lang/cpp17/extension_to_aggregate_initialization.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44

55
## 概要
66

7-
C++17 から集成体初期化が拡張され、基底型を持つ型の初期化が簡潔に記述できるようになった
7+
C++17 から集成体初期化が拡張され、基底クラスを持つ型の初期化が簡潔に記述できるようになった
88

99
## 仕様
1010

11-
集成体初期化において基底型の初期化についても集成体初期化 `{ parameter1, parameter2, ... }` の様式で同様に入れ子にして記述する。
11+
集成体初期化において基底クラスの初期化についても集成体初期化 `{ parameter1, parameter2, ... }` の様式で同様に入れ子にして記述する。
1212

1313
##
1414
```cpp example
@@ -23,12 +23,12 @@ struct delived: base_a, base_b { char c; };
2323
int main()
2424
{
2525
// このような初期化を C++17 以降は本機能により使用できるようになった
26-
// この初期化は C++14 以前では基底型の初期化として扱えず翻訳に失敗してしまう
26+
// この初期化は C++14 以前では基底クラスの初期化として扱えず翻訳に失敗してしまう
2727
delived o
28-
{ { // base_a; 本機能により基底型の初期化を { } で記述できる
28+
{ { // base_a; 本機能により基底クラスの初期化を { } で記述できる
2929
"abc" // base_a::s
3030
}
31-
, { // base_b; 本機能により基底型の初期化を { } で記述できる
31+
, { // base_b; 本機能により基底クラスの初期化を { } で記述できる
3232
12.345 // base_b::d
3333
, { 1, 2, 3} // base_b::v
3434
}
@@ -66,7 +66,7 @@ o.c = d
6666
```
6767
6868
## この機能が必要になった背景・経緯
69-
この機能が無い C++14 までは、同様の事をしたい場合には基底型の初期化も含めたい派生型へ、基底型の初期化も行う構築子を記述する必要があった
69+
この機能が無い C++14 までは、同様の事をしたい場合には基底クラスの初期化も含めたい派生型へ、基底クラスの初期化も行う構築子を記述する必要があった
7070
7171
```cpp example
7272
// C++14 までの旧い仕様で同様の事をできるようにするために必要だった記述
@@ -99,7 +99,7 @@ int main()
9999
このような面倒を本機能により簡潔に記述できるようにしたかった。
100100

101101
```cpp example
102-
// C++17 以降は本機能により C++14 までのように仕込みを行わずとも簡潔に基底型の初期化を記述できるようになった
102+
// C++17 以降は本機能により C++14 までのように仕込みを行わずとも簡潔に基底クラスの初期化を記述できるようになった
103103
#include <iostream>
104104

105105
struct legacy_base { int a; };

lang/cpp17/pack_expansions_in_using.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ struct ForAll2 : T... {
113113
114114
しかしC++11やC++14ではパラメータパックに指定されたクラスが持つメンバ関数を、
115115
全て`using`宣言する簡単な方法がなかった。
116-
このためクラステンプレートが基本クラスと派生クラスでメンバ関数をオーバーロードする場合
116+
このためクラステンプレートが基底クラスと派生クラスでメンバ関数をオーバーロードする場合
117117
実装が煩雑になってしまう問題があった。
118118
119119
```cpp example

lang/cpp17/remove_deprecated_exception_specifications.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ void f();
3838
## この機能を削除するに至った背景・経緯
3939
動的例外仕様はJavaの「検査例外 (checked exception)」機能と近い機能ではあるが、これらには共通の問題がある。それは、オブジェクト指向プログラミングやジェネリックプログラミングとの相性が悪いということである。
4040

41-
オブジェクト指向プログラミングとの相性が悪いというのは、動的例外仕様を使用してオブジェクト指向プログラミングにおける「開放閉鎖原則 (open/closed principle)」を適用するのが難しいことにある。開放閉鎖原則は「拡張に対して開いていて、修正に対して閉じていなければならない」というものである。仮想関数に対して動的例外仕様を使用して送出される例外型を制限した場合、派生クラスでオーバーライドした仮想関数は、起こりうるエラーの種類に過度な制限を受けてしまう。これはたとえばリソースを読み込むクラス・関数を設計した場合、基本クラスでは「読み込みエラー」くらいしか起こりうるエラーの種類を規定できないが、派生クラスでは「ファイルからの読み込みに失敗」や「ネットワークの接続に失敗」といった起こりうるエラーの種類が増える、といった状況に対応できない。
41+
オブジェクト指向プログラミングとの相性が悪いというのは、動的例外仕様を使用してオブジェクト指向プログラミングにおける「開放閉鎖原則 (open/closed principle)」を適用するのが難しいことにある。開放閉鎖原則は「拡張に対して開いていて、修正に対して閉じていなければならない」というものである。仮想関数に対して動的例外仕様を使用して送出される例外型を制限した場合、派生クラスでオーバーライドした仮想関数は、起こりうるエラーの種類に過度な制限を受けてしまう。これはたとえばリソースを読み込むクラス・関数を設計した場合、基底クラスでは「読み込みエラー」くらいしか起こりうるエラーの種類を規定できないが、派生クラスでは「ファイルからの読み込みに失敗」や「ネットワークの接続に失敗」といった起こりうるエラーの種類が増える、といった状況に対応できない。
4242

4343
ジェネリックプログラミングとの相性が悪いというのは、パラメータ化された型によって起こりうるエラーに差異が出るため、起こりうるエラーを列挙することが困難であるという問題である。
4444

0 commit comments

Comments
 (0)