サンディエゴ委員会会議:旅行報告

今年の初めにラッパースウィルを去ったとき、私はサンディエゴの会合には行かないと固く言いました。

1 日 12 時間、1 週間にわたって C++ で作業するために海を渡るのは、まさに狂気の沙汰です。

当然のことながら、私は 60 年代からずっとサンディエゴのホテルに滞在し、1 週間 C++ をしていました。

コンセプト

形容詞構文は、数年間の闘争の後、普及しました。私は、この構文が十分に簡潔で明確であるため、最良の解決策であると信じています。言語のいくつかの問題点は、あいまいな構文 (または、コンテキストに応じて異なる意味を持つ同一の構文) に直接起因する可能性があるため、熱心すぎる簡潔さではなく、驚くべき解決策を選択してよかったと思っています. 、これまで議論されたことのない形容詞構文にもかかわらず、この構文は今後数年間でさらに改善されると信じていますが、それは私たちがその上に構築できる強力な基盤です.

簡潔な構文は、ジェネリック プログラミングと非ジェネリック プログラミングの境界線をうまく曖昧にすることができるため、重要でした。言語を単純化することで、最終的に人々が C++ とジェネリック プログラミングをより直感的に理解できるようになることを願っています。おそらく、もっと重要なことは、構文的に制約されていない関数の統治が終わるかもしれないほど、関数の制約を十分に簡単にすることです.

最後に、これは C++20 のコンセプト パズルの最後のピースだったので、GCC がすぐに標準に追いつくのを見るかもしれません.Clang はおそらく今後数か月以内に続くでしょう.また、Microsoft がコンセプトに積極的に取り組んでいるとも言われました。要点は、C++20 はあなたが思っているよりも近いということです!

コルーチン

コア コルーチンは、TS に非常に近い解決策へとゆっくりと崩壊しています。3 回連続で、本会議で十分に強力なコンセンサスに達することができなくなるまで、TS を進めることにしました。

しかし、ほとんどの人は、遅かれ早かれ解決策が必要であることを認識していると思います.cppcoroの著者であるLewis Bakerは、TSを簡素化するための解決策に積極的に取り組んでおり、複雑さは表明された懸念の1つです.表にあるさまざまな解決策は次のとおりです. 、しかし、必ずしもどちらかであるとは限りません。実際、これらの異なるアプローチに取り組んでいる人々は互いに協力しています。このプロセスは外から見ると混沌としているように見えるかもしれませんが、できれば 20 年以内に得られる結果がすべての人を完全に満足させることができることを期待する理由があります!

しかし、C++20 の WD でコルーチンをマージするには手遅れになるところまで危険なほど近づいています。すぐに決定が下されることを本当に願っています!

モジュール

モジュールはワーキング ドラフトにマージされる寸前です。 Kona の前にいくつかの実装が見られることを期待しています。 Merged の提案は、いくつかの点で TS よりも実用的ですが、おそらく完全に焼き付けるにはもっと時間が必要です.レガシーインポートはおそらく長期的な間違いであると確信していますが、必要悪である可能性があります.ツールの話にはまだ満足していません. 、しかし、できれば 20 時前になることもあります。もっと多くの論文が書かれると思います.

ネットワーキング

ネットワーキングの議論を 23 に延期することを決定しました。この決定は、部屋にいた主要な ASIO ユーザーによって完全に支持されました。ネットワーク TS は、広く使用され、成熟していますが、コルーチン、ラムダ、およびエグゼキュータのない世界から来ています。できる限り最高の非同期フレームワークを提供することを確信してください。

ネットワーキングはまた、実行者を急がない機会を委員会に与えます。エグゼキュータは今後のすべての非同期ユーティリティの基礎であるため、実行しないわけにはいきません.

この決定が一部の人々を失望させることは承知していますが、これが賢明なことであったことが今後 10 年以内に明らかになると確信しています。

テキスト処理と Unicode

Unicode は、最初の公式の対面会議で集まりました。私たちは長期的な計画を思いつきました。エンコーディングから始めて、いつかは Unicode 標準と完全に互換性のある std::regex を置き換える予定です。難しい注文ではありませんが、このグループが素晴らしい結果をもたらすとは思えません.176に投票しました. 、標準で utf-8 エンコードされたデータを表すのに適した型です。C++20 の名前付き文字シーケンスにも取り組んでいます。

この会議の主なテーマは、Unicode サンドイッチを最適に設計し、システム境界でのエンコーディングを処理する方法でした。その作業の一部は、コンパイラと OS ベンダーにあらゆる場所で Unicode を使用するよう説得することです。プラットフォーム。エキサイティングなもの!

反射

私は SG7 がリフレクション グループに会うのを手伝いましたが、全体として、リフレクションは になるようです C++23 のキラー機能です。現在の問題は、実装者が私たちが望むユニコーンを提供できるかどうかだと思います。彼らはノーとは言いませんでした。彼らはイエスと言うことに非常に消極的でした.可能な限り最良の解決策は、constexpr、強く型付けされた、値ベースの解決策のようです.それは次のようになります:

 constexpr std::meta::class_info classInfo = reflexpr(my_class);
 constexpr std::meta::function_info fInfo = classInfo.functions_by_name(f)[0];

詳細を読まないでください。私はこれらの名前をテキサスの数千メートル上空に作りました。ポイントは、リフレクションの外観を持ち、通常のコンテナーとアルゴリズムを使用して通常の C++ にすることです。リフレクションは、言語 をできるだけ多く作成する原動力です。 186 可能な限り.メタプログラミングは難しくて遅いので、メタプログラミングから離れようとしています.

これはまだ始まったばかりです。23 時間枠で多くのことが起こる可能性があります!

自立型

私たちは楽しいフリースタンディングのイブニングセッションを行いました。 Ben Craig の驚くべき業績に多くの関心が寄せられたので、自立型とは何か、また自立型であるべきものを定義しようとしました。それについての論文がポスト メーリング リストに投稿されることを期待しています。ハードウェア ベンダーが C++ をトースターに組み込むことは、経済的に実行可能です。

Michael Caise は、チップ ベンダーを参加させることは、標準および標準ライブラリで明確にフリースタンディングを指定することと同じくらい重要であると説明しました。

議論の大部分は、例外と、C++ 開発者の 40% 以上が 198 を使用していることを委員会がどのように考慮する必要があるかに焦点を当てていました。

ツーリング

ユニコーンが欲しくて、今欲しいのですが、ユニコーンを手に入れるのは難しいようです。一部の企業は、3 つのコーンを持つユニコーンに関心を示しました。ツーリング セッションについて詳しく知りたい場合は、René Rivera の旅行レポートを読むことをお勧めします。

その週の後半に 208 について話しました 、コンパイラ フラグに関係するのはライブラリの進化の仕事ではないことに同意しますが、おそらく現状を改善しようとする必要があります。例外や RTTI を無効にしたり、浮動小数点型の処理を変更したりすることもできます。調査するのは非常に興味深い分野であり、Tooling Study Group の範囲に含まれる可能性があります!

私の論文

委員会は、私たちの時間が限られているため、他の作業に費やす時間が少なくなることを知っていたので、C++20 のすべての論文を優先することにしました.つまり、私は数か月忙しいということです!

シングルパス イテレータの可動性

LEWGI (Luigi) は、範囲の名前空間でサポートされている移動のみのイテレータを確認することに強い関心を示しました。また、タグなしのイテレータ分類のアイデアもコンセンサスになりました。これが LEWG を通過するという保証はありませんが、少数の人々が指摘したように今日 STL を書き直すとしたら、非前方反復子はおそらくコピー可能性を必要とせず、タイム マシンがなければ、次善の策は範囲です。

範囲コンストラクター

設計を少し変更する必要がありますが、さまざまなタイプのコンテナとビューのマテリアライゼーションの簡単なコピーには十分な関心があり、Kona または Cologne によって満足のいく解決策が見つかることを願っています。この機能には強い関心がありますが、同時に実装者は、コンテナがすでに膨大なオーバーロード セットを持っているため、慎重に検討する必要があると主張しました。

source_location をマージ

source_location は 20 であると予想されます。待つ価値があることが証明されます。最後に、source_location は TS からほとんど変更されていませんが、現在は 211 になっています。 isan 即時関数 (225 )、そのアドレスを取得できないようにします。意味がなかったので、これは素晴らしいことです。

添字式でのコンマ演算子の廃止

この論文は Evolution からコンセンサスを得ることができたので、Kona でコアを通過し、できれば WD にマージされることを期待しています.23 多分、26 で多次元添字式を持つことができるようになることを願っています.Isabella Muerte はいくつかを提示しました. 236 を取り戻す方法 C++20 の時間枠での構文については、うまくいくかどうかを待つ必要があります。

その他の論文

移転

私はアーサー・オダウヤーの移転に関する論文を、移動と破壊の観点から提示しました。この機能には非常に強い関心があり、できれば 23 に上陸する予定です。来年の夏のケルンでさらに多くの作業が行われることを期待しています。それがメモリモデルにどのように影響するかについては多くの質問がありますが、これは十分な問題点であり、委員会がそれを機能させる方法を見つけることを確信して望んでいます.アーサーはこの提案についてCppConで講演しました.もっと。

247 という、より一般的なソリューションに取り組めないかと考えました。 - Arthur が提案している以上に、多くの利点があるかどうかはわかりませんが.

直交的に、EWGI は 259 の可能性について議論しました 268 をサポートする これにより、特定のワークロードで vector と string のパフォーマンスも向上するはずです。

オプション

悲しいことに、274 これは、人々が非標準のオプションの型を使用することを助長するのではないかと心配しているため、残念です。事態を起こそうとしてくれた JeanHeyd Meneide に感謝します。前進する最善の道は、287<を完全に置き換えることかもしれません。 /コード> より一般的でより優れたセマンティクスを持つ新しい型を使用します。 291 ? 305 ?

スパン

ポインターとサイズを格納する型を作成するには、何回の会議が必要ですか?かなり多くのようです。最終的にスパンを非正規化し、その署名を修正しました (実際には数回のセッションが必要でした)。Kona でさらにいくつかのマイナーなバグ修正が行われることを期待してください。

この全体は、おそらく群衆の知恵の良いケーススタディです.

非所有型は難しいです。

パターン マッチング

パターンマッチングの最初のプレゼンテーションを行いました。これまでのところ素晴らしいようです.C++23はC++20以来の最高のリリースになるでしょう.私は委員会にこの機能のためにキーワードを先制的に予約するべきだと説得しようとしました.>318 人々のコードを壊す可能性があるため、おそらくコンセンサスに達することができません。 327に備えて .

フォーマット

偉大な 335 に基づく提案 ライブラリ (Victor Zverovich) が承認されました!まだ IO はありません 、したがって、そのリターンは当分の間iostreamにフィードする必要があります.しかし、うまくいけば、すぐに修正できるようになるでしょう.C++は、Pythonのパフォーマンスなしで、ゆっくりとPythonに変わりつつあります.私はその傾向にとても満足しています!

スタックトレース

スタック トレースを出力するライブラリ (Antony Polukhin によって作成された) は、文言グループへの道を進んでいます.これは、非ハッキングの最適な方法で実装するコンパイラ サポートを必要とするため、優れています.

341 から、C++20 および C++23 で期待される多くの論文と機能があります。 (Zach Laine) は、go (Lawrence Crowl) のような通信チャネルとして使用できる潜在的にロックフリーの同時キューに接続します。これを推測すると (Gašper Ažman、Simon Brand、Ben Deane、Barry Revzin) これも重要な機能である可能性があります。 C++23 にします。

エピローグ

これは私にとって 2 回目の会議であり、米国西海岸での初めての会議でした。とても楽しかったです。私たちが見た論文の数は本当に驚くべきものでした。私は時差ぼけから回復するのに苦労しているので、そこにいるすべての人々、特に最初の公式 SG-16 会議の議長を務めた Tom Honermann に感謝したいと思います。 Adelstein Lelbach と JF Bastien は、インキュベーター グループの議長という非常に困難な仕事を土壇場で自発的に引き受けてくれました。これらのグループは大きな成功を収め、メンバーと人々の急増にもかかわらず、委員会が円滑に機能し続けることを保証するのに役立ちました。他の椅子と私がそこで会ったすべての素晴らしい人々。そして、律法学者、律法学者、律法学者。

コンベンション センターを出ると、人々から「コナで会いましょう」と言われました。

Qui vivra verra.

ところで、範囲を統合しました。