คุณสมบัติภาษา:
เทมเพลตและรหัสทั่วไป
แลมบ์ดา
ลูกแกะ
- Lambdas นั้นเป็นตัวเชื่อมโดยปริยายถ้ามันมีคุณสมบัติ
การจับภาพ*this
lambdas
[*this]{ std::cout << could << " be " << useful << '\n'; }
คุณลักษณะ
การล้างข้อมูลไวยากรณ์
การควบคุมการไหลย้อนกลับและการไหลที่สะอาดกว่า
อื่น ๆ
การเพิ่มห้องสมุด:
ชนิดข้อมูล
เรียกสิ่งต่างๆ
std::invoke
- เรียก callable ใด ๆ (ตัวชี้ฟังก์ชั่นฟังก์ชั่นตัวชี้สมาชิก) ด้วยไวยากรณ์เดียว จากแนวคิด INVOKE มาตรฐาน
std::apply
- ใช้ฟังก์ชั่นเหมือนและ tuple และคลาย tuple ลงในการโทร
std::make_from_tuple
, std::apply
นำมาใช้ในการคัดค้านการก่อสร้าง
is_invocable
, is_invocable_r
,invoke_result
Threading
การปรับปรุงตู้คอนเทนเนอร์
การเปลี่ยนแปลงตัวชี้อัจฉริยะ
std
การปรับปรุงประเภทข้อมูลอื่น ๆ:
อื่น ๆ
ไลบรารี C ++ 17 ใช้C11 แทน C99
สงวนไว้std[0-9]+
สำหรับห้องสมุดมาตรฐานในอนาคต
destroy(_at|_n)
, uninitialized_move(_n)
, uninitialized_value_construct(_n)
,uninitialized_default_construct(_n)
- รหัสยูทิลิตี้อยู่แล้วใน
std
การใช้งานส่วนใหญ่เปิดเผย
- ฟังก์ชั่นคณิตศาสตร์พิเศษ
- นักวิทยาศาสตร์อาจชอบพวกเขา
std::clamp()
std::clamp( a, b, c ) == std::max( b, std::min( a, c ) )
ลวก
gcd
และ lcm
std::uncaught_exceptions
- จำเป็นถ้าคุณต้องการที่จะโยนถ้าปลอดภัยจาก destructors
std::as_const
std::bool_constant
- ทั้งกลุ่มของ
_v
ตัวแปรแม่แบบ
std::void_t<T>
- มีประโยชน์อย่างน่าประหลาดใจเมื่อเขียนเทมเพลต
std::owner_less<void>
- กดไลค์
std::less<void>
แต่สำหรับพอยน์เตอร์อัจฉริยะเพื่อจัดเรียงตามเนื้อหา
std::chrono
ขัด
std::conjunction
, std::disjunction
,std::negation
สัมผัส
std::not_fn
- กฎสำหรับการยกเว้นภายใน
std
- std :: is_contiguous_layoutมีประโยชน์สำหรับการแฮ็กที่มีประสิทธิภาพ
- std :: to_chars / std :: from_chars , ประสิทธิภาพสูง, การแปลงจำนวนผู้ไม่เชื่อเรื่องพระเจ้า; ในที่สุดวิธีที่จะทำให้เป็นอันดับ / ดีซีเรียลไลซ์เป็นรูปแบบที่มนุษย์อ่านได้ (JSON & co)
มาตรฐาน :: default_order , std::less
ร้ายกว่า (แบ่ง ABI ของคอมไพเลอร์บางตัวเนื่องจากชื่อ mangling ถูกลบออก)
ลักษณะ
เลิก
Isocpp.org มีรายการการเปลี่ยนแปลงที่เป็นอิสระตั้งแต่ C ++ 14; มันถูกปล้นส่วนหนึ่ง
โดยธรรมชาติแล้ว TS ทำงานต่อเนื่องกันดังนั้นจึงมีบาง TS ที่ยังไม่สุก - ที่จะต้องรอการทำซ้ำครั้งต่อไป เป้าหมายสำหรับการทำซ้ำครั้งถัดไปคือ C ++ 20 ตามที่วางแผนไว้ก่อนหน้านี้ไม่ใช่ C ++ 19 เนื่องจากมีข่าวลือบางอย่างบอกเป็นนัย หลีกเลี่ยงการใช้ C ++ 1O
รายการเริ่มต้นที่นำมาจากโพสต์Reddit นี้และโพสต์ Reddit นี้พร้อมลิงก์ที่เพิ่มผ่าน googling หรือจากหน้า isocpp.org ด้านบน
รายการเพิ่มเติมถูกปล้นจากรายการทดสอบคุณลักษณะSD-6
รายการคุณลักษณะของ clangและรายการคุณลักษณะห้องสมุดอยู่ถัดจากการถูกปล้น สิ่งนี้ดูเหมือนจะไม่น่าเชื่อถือเนื่องจากเป็น C ++ 1z ไม่ใช่ C ++ 17
สไลด์เหล่านี้มีคุณสมบัติบางอย่างขาดหายไปที่อื่น
ในขณะที่ไม่ได้ถามว่า "สิ่งที่ถูกลบ" นี่คือรายการสั้น ๆ ของบางสิ่ง ((ส่วนใหญ่?) คัดค้านก่อนหน้านี้) ที่ถูกลบใน C ++ 17 จาก C ++:
ลบ:
มีคำพูดซ้ำ ๆ ฉันไม่แน่ใจว่าสิ่งเหล่านี้มีผลกระทบกับรหัสหรือหากพวกเขาเป็นเพียงการสะสางในมาตรฐาน:
เอกสารที่ยังไม่ได้รวมเข้ากับด้านบน:
P0505R0 (constexpr chrono)
P0418R2 (การปรับแต่งอะตอม)
P0512R0 (ปรับแต่งการลดอาร์กิวเมนต์เทมเพลต)
P0490R0 (การปรับแต่งที่มีผลผูกพันโครงสร้าง)
P0513R0 (เปลี่ยนเป็นstd::hash
)
P0502R0 (ข้อยกเว้นแบบขนาน)
P0509R1 (อัปเดตข้อ จำกัด เกี่ยวกับการจัดการข้อยกเว้น)
P0012R1 (ทำข้อกำหนดข้อยกเว้นเป็นส่วนหนึ่งของระบบประเภท)
P0510R0 (ข้อ จำกัด เกี่ยวกับชุดรูปแบบ)
P0504R0 (แท็กสำหรับทางเลือก / ชุดตัวเลือก / ใด ๆ )
P0497R0 (ปรับแต่ง PTR ที่ใช้ร่วมกัน)
P0508R0 (จับโหนดโครงสร้างที่จับ)
P0521R0 (ตัวชี้ที่ใช้ร่วมกันนับการใช้งานและการเปลี่ยนแปลงที่ไม่ซ้ำ?)
การเปลี่ยนแปลงข้อมูลจำเพาะ:
อ้างอิงเพิ่มเติม: