私の理解が正しければ、次のセマンティクスが C++、C#、および D の構造体とクラスに適用されます。
struct class
----------------------------------
C++ stack/heap stack/heap
value/reference value/reference
C# / D stack heap
value reference
つまり、C++ では、構造体とクラスの間にセマンティックの違いはありません (デフォルトのパブリック/プライベート アクセスは別として)。対照的に、C# と D の構造体には値のセマンティクスとスタックの割り当て (少なくとも既定では) がありますが、C# と D のクラスには参照のセマンティクスとヒープの割り当てがあります。
私の質問は、値セマンティクスを持つすべてのエンティティに対して排他的に struct キーワードを使用し、参照セマンティクスを持つすべてのエンティティに対して排他的に class キーワードを使用して、この違いを模倣するのは良い C++ スタイルでしょうか?
もちろん、これはコンパイラによって強制されない自己規律ツールですが、特に C# / D のバックグラウンドを持つレビュアーにとって、コードの読みやすさを向上させることができます。OTOH、C++ の現在のイディオムは、純粋な POD 集計やテンプレート メタ関数などの単純なエンティティにのみ struct キーワードを使用するように思われるため、C++ プログラマーにとって混乱を招く可能性があります。