在C++20中,
std::is_pod
已被弃用。
这个选择的原因是什么?我应该使用什么来代替std::is_pod
来判断一个类型是否实际上是POD?std::is_pod
已被弃用。
这个选择的原因是什么?我应该使用什么来代替std::is_pod
来判断一个类型是否实际上是POD?POD被替换为两个分类,以更细致的方式进行划分。2017年11月的C++标准会议对此进行了以下说明:
弃用“plain old data”(POD)的概念。它已被两个更细致的类型“trivial”和“standard-layout”所取代。“POD”等同于“trivial和standard layout”,但对于许多代码模式,只使用“trivial”或只使用“standard layout”的限制更为适当;为了鼓励这种精度,因此弃用了“POD”的概念。库特征is_pod也相应地被弃用。
对于简单数据类型,请使用is_standard_layout
函数;对于平凡数据类型(例如简单结构体),请使用is_trivial
函数。
remove_cvref
,那是一个组合特质,而在另一侧他们移除了其他组合特质?这看起来很疯狂。 :-) - skypjackstd::is_pod<T>{} == (std::is_trivial<T>{} && std::is_standard_layout<T>{})
? - Yakk - Adam Nevraumont
static_assert
و¥ç،®ن؟و²،وœ‰ن؛؛触碰ه؛”该ن¸ژCن»£ç په…±ن؛«çڑ„结و„ن½“م€‚ - Mirko