ใน C ++ 20 แนวคิดของ POD ถูกคัดค้านเนื่องจากเป็นลักษณะประกอบที่ไม่มีความหมายว่าเป็นเรื่องไร้สาระและมีรูปแบบมาตรฐาน
ไม่ถูกต้อง POD ของคำศัพท์ถูกเลิกใช้เนื่องจากไม่มีความสำคัญอีกต่อไป :
คำว่า POD ไม่ได้มีวัตถุประสงค์ในมาตรฐานอีกต่อไปมันเป็นเพียงการกำหนดและข้อ จำกัด จะมีผลบังคับใช้เมื่อประเภทอื่น ๆ สองสามรักษาคุณสมบัติร่องรอยที่
โดยพื้นฐานแล้วประเภทที่มีทั้งเลย์เอาต์เล็ก ๆ น้อย ๆ และเลย์เอาท์มาตรฐานไม่ได้รับความสามารถใด ๆ นอกเหนือไปจากสิ่งที่ไม่สำคัญ การรวมกันของทั้งสองไม่ได้ทำให้ประเภทพิเศษและคุณสมบัติทั้งสองไม่ได้มีอะไรมากที่จะทำกับคนอื่น
เลย์เอาต์มาตรฐานเป็นเรื่องเกี่ยวกับเลย์เอาต์ของ subobjects ที่ไม่ว่างเปล่าซึ่งถูกกำหนดไว้อย่างดี (เช่นเดียวกับ subobjects คลาสฐานที่ว่างเปล่าซึ่งไม่รบกวนรูปแบบของประเภท) Triviality เป็นเรื่องเกี่ยวกับว่าวัตถุนั้นมีความหมายบางอย่างนอกเหนือจากบล็อกของบิตที่เก็บ (และเป็นแนวคิดที่เป็นวัตถุที่ถูกต้องหรือไม่ถ้ามันถูกกำหนดค่าเริ่มต้นด้วยบล็อกของบิตโดยพลการ)
ถ้าฉันสร้างเทมเพลตที่ใช้ประเภทT
และฉันต้องการดูว่าฉันสามารถmemcpy
คัดค้านประเภทนั้นได้หรือไม่ฉันไม่สนใจโครงร่างของสมาชิก ฉันต้องการที่จะรู้ว่ามันเป็นเรื่องเล็กน้อยคัดลอก ในทำนองเดียวกันความถูกต้องของoffsetof
ไม่สนใจน้อยถ้าชั้นมีตัวสร้างสำเนาที่ผู้ใช้ให้ สิ่งที่สำคัญก็คือถ้าเลย์เอาต์ของ subobjects สมาชิกเกิดขึ้นในลำดับที่ชัดเจนบังคับใช้มาตรฐาน
โดยทั่วไปผู้คนมองไปรอบ ๆ และตระหนักว่าไม่มีอะไรเหลือใน C ++ ที่ต้องการการแยกส่วนของเรื่องไร้สาระและเลย์เอาต์มาตรฐาน ดังนั้นเราไม่จำเป็นต้องจองคำสำหรับมัน สถานที่ไม่กี่แห่งที่มาตรฐานระบุอย่างชัดเจนว่าบางประเภทจะเป็น "POD" สามารถถูกแทนที่ด้วย "รูปแบบมาตรฐานและเล็กน้อย" ตามความเหมาะสม
ข้อกำหนดแบบเรียกซ้ำซ้อนนี้ซ้ำซ้อนหรือไม่
เนื่องจากความต้องการขององค์ประกอบทั้งสองซ้ำกันแยกกันการแยกของทั้งสองจึงซ้ำด้วย ดังนั้นจึงไม่จำเป็นต้องระบุอย่างชัดเจนว่า subobjects ทั้งหมดเป็น POD นี่เป็นมากกว่ากรณีของการคัดลอกและวางที่ความหมายดั้งเดิมกล่าวว่าบางสิ่งเช่น "สมาชิกข้อมูลที่ไม่คงที่ทั้งหมดจะต้องเป็นประเภท POD" และพวกเขาก็เก็บคำสั่งนั้นตามที่เป็นอยู่