Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

POD was deprecated #51

Open
yumetodo opened this issue Nov 23, 2020 · 2 comments
Open

POD was deprecated #51

yumetodo opened this issue Nov 23, 2020 · 2 comments

Comments

@yumetodo
Copy link
Contributor

C++11ではCとのデータ構造互換を考える時に、これまでPODという概念を用いていたのをtrivial classとstandard-layout classに分離し、さらにtrivial classよりゆるい制約としてtrivially copyable classという概念を導入した。本当に必要な制約はtrivially copyable classまたはstandard-layout classであるため、PODはC++20でdeprecatedとなった。
したがってPODとはC++考古学の範疇であり、新たに説明するのは望ましくない。

ref:

@yohhoy
Copy link

yohhoy commented Nov 27, 2020

したがってPODとはC++考古学の範疇であり、新たに説明するのは望ましくない。

#65 構造体 の議論と類似しますが、C++11以前から POD(Plain Old Data) と呼ばれる概念があるのは真実ですし、言及自体はあっても良いのではと思います。[class]/10

PODに関する話題は、C++と他プログラミング言語との相互運用性において意味を持つものです。その意味では、データメンバのオフセット位置やパディング量といった、(単なるC++仕様を超えて)メモリ配置についても考慮する必要があると思います。

このサイトではC++言語仕様の解説を目指すのか、実用性を目指すのかで方向性が変わってくるのではないでしょうか。

@yohhoy
Copy link

yohhoy commented Nov 27, 2020

別issueにすべきかもしれませんが、12.2 では文脈的に 集成体(aggregate) と 構造体(structure type) が混同されているように思えます。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants