คำถามติดแท็ก return-type-deduction

2
เดคไทป์ (อัตโนมัติ) มีประโยชน์อะไรบ้าง?
Наэтотвопросестьответына Stack Overflow нарусском : Конструкция decltype (อัตโนมัติ) ใน c ++ 14 มีการใช้decltype(auto)สำนวน โดยปกติการใช้งานของมันคือการอนุญาตให้มีautoการประกาศใช้decltypeกฎระเบียบเกี่ยวกับการแสดงออกที่กำหนด ค้นหาตัวอย่างของการใช้คำว่า "ดี" ของสำนวนฉันสามารถนึกถึงสิ่งต่าง ๆ ดังต่อไปนี้ (โดยสก็อตต์เมเยอร์ส ) นั่นคือสำหรับการคืนค่าประเภทของฟังก์ชัน : template<typename ContainerType, typename IndexType> // C++14 decltype(auto) grab(ContainerType&& container, IndexType&& index) { authenticateUser(); return std::forward<ContainerType>(container)[std::forward<IndexType>(index)]; } มีตัวอย่างอื่น ๆ ที่คุณสมบัติภาษาใหม่นี้มีประโยชน์หรือไม่

7
ฉันควรใช้การลดชนิดการส่งคืนอัตโนมัติ C ++ 14 เมื่อใด
ด้วยการเปิดตัว GCC 4.8.0 เรามีคอมไพเลอร์ที่รองรับการหักค่าส่งคืนชนิดอัตโนมัติซึ่งเป็นส่วนหนึ่งของ C ++ 14 ด้วย-std=c++1yฉันสามารถทำสิ่งนี้: auto foo() { //deduced to be int return 5; } คำถามของฉันคือ: ฉันควรใช้คุณสมบัตินี้เมื่อใด เมื่อใดที่จำเป็นและเมื่อใดที่ต้องทำให้รหัสสะอาดขึ้น สถานการณ์ 1 สถานการณ์แรกที่ฉันนึกได้คือเมื่อเป็นไปได้ ทุกฟังก์ชั่นที่สามารถเขียนด้วยวิธีนี้ควรจะเป็น ปัญหาเกี่ยวกับสิ่งนี้คือมันอาจไม่ทำให้โค้ดอ่านง่ายขึ้นเสมอไป สถานการณ์ที่ 2 สถานการณ์ต่อไปคือการหลีกเลี่ยงประเภทการคืนที่ซับซ้อนมากขึ้น เป็นตัวอย่างที่เบามาก: template<typename T, typename U> auto add(T t, U u) { //almost deduced as decltype(t + u): decltype(auto) would return t …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.