C++26リフレクションに対応#1607
Conversation
|
まだ大量に抜けがありそう |
|
これの取り消しに対応しないといけない |
|
@yohhoy @Raclamusi |
6d21c35 to
32cd88c
Compare
Co-authored-by: Raclamusi <61970673+Raclamusi@users.noreply.github.com>
cfe6abb to
741186c
Compare
…る必要がある Co-authored-by: Raclamusi <61970673+Raclamusi@users.noreply.github.com>
…必要がある Co-authored-by: Raclamusi <61970673+Raclamusi@users.noreply.github.com>
Co-authored-by: Raclamusi <61970673+Raclamusi@users.noreply.github.com>
Co-authored-by: Raclamusi <61970673+Raclamusi@users.noreply.github.com>
Co-authored-by: Raclamusi <61970673+Raclamusi@users.noreply.github.com>
Co-authored-by: Raclamusi <61970673+Raclamusi@users.noreply.github.com>
Co-authored-by: Raclamusi <61970673+Raclamusi@users.noreply.github.com>
Co-authored-by: Raclamusi <61970673+Raclamusi@users.noreply.github.com>
|
一旦、コミットを整理しつつ @Raclamusi さんの変更を取り込みました |
|
ページ数としては、一旦過不足がなくなったはず。 |
|
TODO : ハッシュ計算の例を書く。hash_combineはないので、とりあえずXORで |
|
いただいた指摘には一旦対応しましたが、reflection.mdでの解説を見直す必要があります。 |
|
対応したので、このあと一旦セルフレビュー |
|
直しました〜 |
|
GCC 16で使えるようなので、動作検証します |
|
GCC 16ですべて動作検証しました。一部未実装もあったので、[mark noimpl]をつけてあります。 |
|
|
|
consteval info current_function();
consteval info current_class();
consteval info current_namespace();
consteval bool is_applicable_type(info fn, info tuple);
consteval bool is_nothrow_applicable_type(info fn, info tuple);
consteval info apply_result(info fn, info tuple);
|
|
@Raclamusi |
|
GCCのコンパイルオプションを記載しました |
…クラス型には const が付く Co-authored-by: Raclamusi <61970673+Raclamusi@users.noreply.github.com>
Co-authored-by: Raclamusi <61970673+Raclamusi@users.noreply.github.com>
| * std::meta::access_context[link /reference/meta/access_context.md] | ||
| * unchecked[link /reference/meta/access_context/unchecked.md] | ||
|
|
||
| 非メンバ関数(名前空間スコープの関数)の場合、オーバーロード集合そのものをリフレクションとして取得する手段は存在しない。そのため、非メンバ関数でオーバーロード集合から特定のオーバーロードを扱いたい場合は、関数ポインタ型にキャストして型を明示するなどの手段が必要となる。汎用的に関数のオーバーロードをリフレクションで扱いたい場合は、クラスのメンバ関数として定義することが必要になる。 |
There was a problem hiding this comment.
最後の「クラスのメンバ関数として定義することが必要」のイメージが掴めませんでした。直前サンプルコードのように、「クラスSのメンバ関数一覧から明示的に選択する必要がある」というニュアンスでしょうか?
There was a problem hiding this comment.
当該文節を読み直して、ここでの意図を理解できました...
- 名前空間スコープ(非メンバ関数)で関数オーバーロードを定義:関数ポインタ型へのキャスト等で関数を特定する必要がある
- クラススコープで関数オーバーロードを定義:所属クラスから
meta::member_of一覧取得して選択する方式が取れる
技術的には 「名前空間 ^^NS から関数オーバーロードに含まれる関数一覧から(頑張って)特定関数のリフレクションを取得」も出来はしますね。読み進める上で "小さな引っ掛かり"があった程度ですから、現行説明のままでも問題無いとは思います。
一通り軽くチェックしたくらいなので、作業漏れチェックなどしてからマージします。