cpprefjp / site

cpprefjpサイトのMarkdownソース
https://cpprefjp.github.io/
375 stars 155 forks source link

参照/constメンバを含むクラス置換やstd::launder説明のアップデート #1130

Open yohhoy opened 1 year ago

yohhoy commented 1 year ago

ISO C++17発行後に採択(Adopted 2019-11)された提案文書 P1971R0, NB RU007 により、下記2ページの説明が陳腐化しているようです。

特に前者のC++17機能説明ページでは、記載内容全てがキャンセルされる状況となっています。

P1971R0によるコア言語仕様改訂を「C++20新機能」と解釈すればそのままでもよさそうですが、DR的に遡及適用されるようだとC++17機能説明ページに注釈を入れる(or ページ削除)かの対応が必要に思えます。

k-satoda commented 1 year ago

N4839 (WG21 2019-11 Belfast Minutes of Meeting) の CWG Motions で、 DR として適用するものは "accept as Defect Reports" と明記され、 そうでないものは "apply the changes" と書き分けられていることから、 P1971R0 の変更は DR ではなく C++20 での変更と見ています。

Motion 2 Move to accept as Defect Reports all issues in P1968R0 (...) and apply the proposed resolutions to the C++ working paper.

Motion 3 Move to apply the changes in P1971R0 (...) to the C++ working paper.

この書き分けは少なくとも CWG について 2019 より前から定着していて、 これで区別がつくものと思ってます。( LWG は書き分けしていなかったり、 曖昧と言われればそうだなというところではありますが。)

気になるところとして P1971R0 が DR を「含む」とする記述が P2131R0 にあります。

The following papers contain issues that have been accepted as defect reports. CWG issues are handled by ..., P1971R0, ....

でも "... the meeting minutes contain the details." とつづいているので、 やっぱり N4839 の記述が正と見ています。

ということで、 C++20 での改定についての記述の追加あるいは改定を踏まえた 記事の更新があればよいとは思いますが、 C++17 の状態を記述したものとして 間違いではないものと思っています。

yohhoy commented 1 year ago

N4839 (WG21 2019-11 Belfast Minutes of Meeting) の CWG Motions

情報ありがとうございます。確かにDR(Defect Report)とそれ以外の使い分けがみられますね。

C++20 での改定についての記述の追加あるいは改定を踏まえた記事の更新があればよいとは思いますが、 C++17 の状態を記述したものとして間違いではないものと思っています。

明確にDRと読み取れない以上、機能説明ページ「C++17 参照メンバをもつクラスの置き換え」には注釈追記、std::launderページにはC++20機能として加筆する方針が無難かなと思いました。

yohhoy commented 1 year ago

(参考)他サイト cppreference.com だと、"Remove outdated use case, RU007 makes that part of the example pointless" コメントでconstメンバの例をExampleから削除していました。

https://en.cppreference.com/mwiki/index.php?title=cpp/utility/launder&diff=134497&oldid=132981