Skip to content

Commit 0c34465

Browse files
committed
offset_of, size_of, source_location_of, type_of : 対象が狭かった
1 parent 38f05e0 commit 0c34465

4 files changed

Lines changed: 41 additions & 9 deletions

File tree

reference/meta/offset_of.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,21 @@ namespace std::meta {
1212
* info[link info.md]
1313
1414
## 概要
15-
メンバ変数のオフセットを取得する。
15+
メンバ変数や基底クラスのオフセットを取得する。
16+
17+
以下のいずれかを表すリフレクションを受け取れる:
18+
19+
- メンバ変数
20+
- 無名ビットフィールド
21+
- 直接基底クラス関係(仮想基底クラスかつ派生クラスが抽象クラスである組み合わせは除く)
1622
1723
1824
## 戻り値
19-
`r`がメンバ変数を表す場合、そのメンバの所属するクラスの先頭からのオフセットを[`member_offset`](member_offset.md)として返す。
25+
`r`が上記のいずれかを表す場合、所属するクラスの先頭からのオフセットを[`member_offset`](member_offset.md)として返す。
2026
2127
2228
## 例外
23-
`r`がメンバ変数または基底クラス関係を表さない場合、[`std::meta::exception`](exception.md)例外を送出する。
29+
`r`が上記のいずれも表さない場合、[`std::meta::exception`](exception.md)例外を送出する。
2430
2531
2632
## 例

reference/meta/size_of.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,22 @@ namespace std::meta {
1212
* info[link info.md]
1313
1414
## 概要
15-
型またはデータメンバのサイズを取得する
15+
型、オブジェクト、値、変数、メンバ変数、または基底クラス関係のサイズを取得する
1616
1717
1818
## 戻り値
19-
`r`が型を表す場合は`sizeof`相当の値を、メンバ変数を表す場合はそのメンバのサイズを返す。
19+
`r`が以下のいずれかを表す場合、そのサイズを返す:
20+
21+
- 型
22+
- オブジェクト
23+
- 値
24+
- 参照型でない変数
25+
- ビットフィールドでないメンバ変数
26+
- 直接基底クラス関係
2027
2128
2229
## 例外
23-
`r`が型またはメンバ変数を表さない場合、[`std::meta::exception`](exception.md)例外を送出する。
30+
`r`が上記のいずれも表さない場合、[`std::meta::exception`](exception.md)例外を送出する。
2431
2532
2633
## 例

reference/meta/source_location_of.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,21 @@ namespace std::meta {
1414
## 概要
1515
リフレクションのソース位置を取得する。
1616
17+
任意のリフレクションを受け取れる。
18+
1719
1820
## 戻り値
1921
`r`が表すエンティティが宣言されたソース位置を[`std::source_location`](/reference/source_location/source_location.md)として返す。
2022
23+
ただし、以下のリフレクションに対してはデフォルト構築された`source_location`(ソース位置情報なし)を返す:
24+
25+
- 値
26+
- クラス型・列挙型以外の型
27+
- グローバル名前空間
28+
- データメンバ仕様
29+
30+
それ以外のリフレクションに対する戻り値は実装定義である。
31+
2132
2233
## 例
2334
```cpp example

reference/meta/type_of.md

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,22 @@ namespace std::meta {
1414
## 概要
1515
リフレクションが表すエンティティの型のリフレクションを取得する。
1616
17+
以下のいずれかを表すリフレクションを受け取れる:
18+
19+
- 値、オブジェクト、変数、または関数(未推論のプレースホルダ型を含まず、コンストラクタ・デストラクタでないもの)
20+
- 列挙子
21+
- メンバ変数
22+
- 無名ビットフィールド
23+
- 直接基底クラス関係
24+
- データメンバ仕様
1725
18-
## 戻り値
19-
`r`が表す値、オブジェクト、変数、関数、メンバ変数、ビットフィールド、列挙子、基底クラス関係、データメンバ仕様、または関数パラメータの型のリフレクションを返す。
2026
27+
## 戻り値
28+
`r`が上記のいずれかを表す場合、対応する型のリフレクションを返す。列挙子の場合は列挙型のリフレクション、直接基底クラス関係の場合は基底クラスの型のリフレクションを返す。
2129
2230
2331
## 例外
24-
`r`が型を持つエンティティを表さない場合、[`std::meta::exception`](exception.md)例外を送出する。
32+
`r`が上記のいずれも表さない場合(型、名前空間、テンプレート、コンストラクタ、デストラクタ、未推論のプレースホルダ戻り値型を持つ関数など)、[`std::meta::exception`](exception.md)例外を送出する。
2533
2634
## 例
2735
```cpp example

0 commit comments

Comments
 (0)