site icon indicating copy to clipboard operation
site copied to clipboard

[C++23] tuple, pair, tuple-likeオブジェクトの互換性

Open faithandbrave opened this issue 2 years ago • 8 comments

  • P2165R4 Compatibility between tuple, pair and tuple-like objects

faithandbrave avatar Jan 09 '23 06:01 faithandbrave

こちらも #1063 と同時に進行させないと面倒なことになることに気づいたので引き受けます。

tomolatoon avatar Jan 10 '23 10:01 tomolatoon

pair-likeについての相談です。

pair-likeは、C++20時点においては[range.subrange]で定義されていたのですが、現行のドラフトではtuple-likeの追加に伴い、定義が変更された上で[tuple.syn]へと定義が移動されました。そのため、次の問題が生じました。

  • <exposition-only>の表の記載について、C++20 としては<ranges>記載になるが、C++23 としては<tuple>記載にする必要がある
  • 同様のことから、C++20 としてはpair-like.md/reference/rangesに置きたいが、C++23 としては/reference/tupleに置きたい

そこで相談なのですが、<exposition-only>の表への記載と、pair-like独自ページのファイルシステム上での配置はどうすればいいでしょうか。よろしくお願いします。

tomolatoon avatar Jan 17 '23 09:01 tomolatoon

説明専用コンセプトは、互換性を気にせず書く場所を決めちゃってよいかと思います。 C++20でも<tuple>pair-liketuple-likeを書いてしまってよいと思いますが、その場合はなにか懸念があるでしょうか?

faithandbrave avatar Jan 17 '23 10:01 faithandbrave

互換性を気にせず書く場所を決めちゃってよい

了解しました。最新の状態に合わせ、表での位置とファイルの場所は変えていく形で作業しようと思います。

その場合はなにか懸念があるでしょうか?

C++20 時点での規格書と合わなくなることと、内容が変わらずに名称だけ変更されている事例が別にあったので、C++20 の規格書を読むときのリファレンスとしては若干使いにくくなる程度です。ただ、サイト内検索や Google 検索で補えるはずなので、問題は無いと思いますので、先述の通り作業したいと思います。

tomolatoon avatar Jan 17 '23 10:01 tomolatoon

再び質問です。

tuple-likeなオブジェクト同士のbasic_common_referenceoperator<=>などのユーティリティはどのようなファイル配置とページ記載にすれば良いでしょうか。特定のクラスに紐づくものではないので、どうすればいいか迷っています。

(一応ですが、思いついたものとしては、/reference/tuple/tuple-like/以下にファイルを用意して、<tuple>のページで「tuple-likeなオブジェクトのユーティリティ」などと見出しを用意してリンクを貼る、というのがあります。)

tomolatoon avatar Jan 20 '23 07:01 tomolatoon

(一応ですが、思いついたものとしては、/reference/tuple/tuple-like/以下にファイルを用意して、<tuple>のページで「tuple-likeなオブジェクトのユーティリティ」などと見出しを用意してリンクを貼る、というのがあります。)

それで大丈夫です!

オーバーロードと特殊化は、関連するそのクラスの階層以下に置く、というルールにしてあります。例として、std::chrono::durationクラスがcommon_typeを特殊化していて、durationクラス階層以下にcommon_typeの特殊化ページを作っています。 https://cpprefjp.github.io/reference/chrono/duration.html tuple-likeはコンセプトではありますが、コンセプトでの特殊化やオーバーロードも対象にしてよいと思います。

faithandbrave avatar Jan 20 '23 08:01 faithandbrave

よかった...ありがとうございます! その辺りのルールあるいは書き方というのも纏まっているとありがたいですね...

tomolatoon avatar Jan 20 '23 09:01 tomolatoon

ディレクトリ構造のドキュメントを作っておきます!

faithandbrave avatar Jan 20 '23 09:01 faithandbrave