คู่มือการหักเงินที่กำหนดโดยผู้ใช้สำหรับประเภทมาตรฐาน
ด้วยเหตุผลบางประการยังขาดCTAD ที่คาดไว้สำหรับstd::initializer_list
ในเสียงดัง :
std::initializer_list l{1,2,3}; // error in clang
การเพิ่มคำแนะนำที่ผู้ใช้กำหนดเองดังต่อไปนี้สามารถแก้ไขปัญหาได้ :
namespace std {
template<class T>
initializer_list(const initializer_list<T>&) -> initializer_list<T>;
}
แต่อนุญาตให้เพิ่มคู่มือที่ผู้ใช้กำหนดเองสำหรับ CTAD สำหรับstd::
ประเภทได้หรือไม่?
คำตอบ
5 Oliv
การเพิ่มคู่มือการหักในประเภทไลบรารีมาตรฐานคือ UB [namespace std] §4.4 :
ลักษณะการทำงานของโปรแกรม C ++ ไม่ได้กำหนดไว้หากประกาศ: [... ]
- คู่มือการหักสำหรับเทมเพลตคลาสไลบรารีมาตรฐานใด ๆ