คำถามติดแท็ก noexcept

8
เมื่อใดที่ฉันควรใช้ noexcept จริงๆ
noexceptคำหลักที่สามารถนำมาประยุกต์ใช้ให้เหมาะสมกับลายเซ็นฟังก์ชั่นจำนวนมาก แต่ผมไม่แน่ใจว่าเมื่อฉันควรพิจารณาใช้มันในทางปฏิบัติ จากสิ่งที่ฉันได้อ่านจนถึงตอนนี้noexceptดูเหมือนว่าประเด็นสำคัญบางอย่างที่เกิดขึ้นเมื่อมีการเคลื่อนย้ายสิ่งก่อสร้าง อย่างไรก็ตามฉันยังคงไม่สามารถให้คำตอบที่น่าพอใจสำหรับคำถามเชิงปฏิบัติบางอย่างที่ทำให้ฉันอ่านเพิ่มเติมเกี่ยวกับnoexceptในตอนแรก มีตัวอย่างมากมายของฟังก์ชั่นที่ฉันรู้ว่าจะไม่ทิ้ง แต่สำหรับคอมไพเลอร์ไม่สามารถกำหนดได้ด้วยตัวเอง ฉันควรผนวกท้ายnoexceptประกาศฟังก์ชันในทุกกรณีเช่นนี้หรือไม่? ต้องคิดก่อนว่าจะต้องต่อท้ายหรือไม่noexceptหลังจากการประกาศฟังก์ชั่นทุกครั้งจะลดประสิทธิภาพการทำงานของโปรแกรมเมอร์ลงอย่างมาก (และตรงไปตรงมาจะเป็นความเจ็บปวดในตูด) สำหรับสถานการณ์ที่ฉันควรจะระมัดระวังมากขึ้นเกี่ยวกับการใช้noexceptและสำหรับสถานการณ์ที่ฉันจะได้รับไปด้วยนัยnoexcept(false)? ฉันสามารถเมื่อแนบเนียนคาดหวังที่จะสังเกตการปรับปรุงประสิทธิภาพการทำงานหลังจากที่ใช้noexcept? โดยเฉพาะอย่างยิ่งให้ตัวอย่างของรหัสที่คอมไพเลอร์ C ++ noexceptสามารถสร้างรหัสเครื่องดีขึ้นหลังจากที่นอกเหนือจากคะแนน โดยส่วนตัวแล้วฉันสนใจnoexceptเพราะมีอิสระมากขึ้นในการรวบรวมเพื่อใช้การเพิ่มประสิทธิภาพบางประเภทอย่างปลอดภัย คอมไพเลอร์สมัยใหม่ใช้ประโยชน์จากnoexceptวิธีนี้หรือไม่? ถ้าไม่ฉันสามารถคาดหวังให้พวกเขาบางคนทำเช่นนั้นได้ในอนาคตอันใกล้

3
ความแตกต่างระหว่าง C ++ 03 throw () specifier C ++ 11 noexcept
มีความแตกต่างระหว่าง throw()และnoexceptอื่น ๆ นอกเหนือจากการตรวจสอบที่รันไทม์และรวบรวมเวลาตามลำดับ? บทความ Wikipedia C ++ 11 นี้ชี้ให้เห็นว่าตัวระบุการโยน C ++ 03 เลิกใช้งานแล้ว เหตุใดจึงมีnoexceptความสามารถเพียงพอที่จะครอบคลุมทุกสิ่งในเวลาคอมไพล์ [หมายเหตุ: ฉันตรวจสอบคำถามนี้และบทความนี้แล้ว แต่ไม่สามารถระบุเหตุผลที่ชัดเจนในการเลิกใช้งานได้]
100 c++  exception  c++11  throw  noexcept 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.