คำถามติดแท็ก name-lookup

4
"การค้นหาอาร์กิวเมนต์ขึ้นอยู่กับ" (aka ADL หรือ "การค้นหานิก") คืออะไร
คำอธิบายที่ดีเกี่ยวกับการค้นหาที่ขึ้นอยู่กับการโต้แย้งคืออะไร? หลายคนก็เรียกมันว่า Koenig Lookup เช่นกัน โดยเฉพาะอย่างยิ่งฉันต้องการทราบ: ทำไมเป็นสิ่งที่ดี ทำไมมันเป็นสิ่งที่ไม่ดี? มันทำงานยังไง?

2
เหตุใดฟังก์ชันเทมเพลตนี้จึงไม่ทำงานอย่างที่คาดไว้
ฉันอ่านเกี่ยวกับฟังก์ชั่นเทมเพลตและสับสนกับปัญหานี้: #include <iostream> void f(int) { std::cout << "f(int)\n"; } template<typename T> void g(T val) { std::cout << typeid(val).name() << " "; f(val); } void f(double) { std::cout << "f(double)\n"; } template void g<double>(double); int main() { f(1.0); // f(double) f(1); // f(int) g(1.0); // d f(int), this is surprising …

3
ชื่อคลาสที่ผ่านการรับรองโดยสมบูรณ์ถึงขอบเขตทั่วโลกที่จำเป็นสำหรับคำจำกัดความของฟังก์ชั่นสมาชิกนอกบรรทัดหรือไม่?
คำถามนี้ทำให้ฉันสงสัยว่ามันมีประโยชน์ / จำเป็นสำหรับชื่อคลาสที่มีคุณสมบัติครบถ้วน (รวมถึงตัวดำเนินการขอบเขตทั่วโลก) ในนิยามฟังก์ชันฟังก์ชันสมาชิกนอกคลาสหรือไม่ ในมือข้างหนึ่งฉันไม่เคยเห็นสิ่งนี้มาก่อน (และไวยากรณ์ในการทำอย่างถูกต้องดูเหมือนคลุมเครือ) ในอีกด้านหนึ่งการค้นหาชื่อ C ++ นั้นไม่ใช่เรื่องเล็กน้อยดังนั้นอาจมีกรณีเล็ก ๆ น้อย ๆ คำถาม: มีกรณีที่แนะนำคำนิยามฟังก์ชั่นสมาชิกนอกคลาสโดย ReturnType (::Fully::Qualified::Class::Name::MemberFunctionName)(...) { ... } จะแตกต่างจาก ReturnType Fully::Qualified::Class::Name::MemberFunctionName(...) { ... }(ไม่มี::คำนำหน้าขอบเขตทั่วโลก)? โปรดทราบว่าคำจำกัดความของฟังก์ชันสมาชิกจะต้องใส่ไว้ในเนมสเปซที่ล้อมรอบคลาสดังนั้นนี่ไม่ใช่ตัวอย่างที่ถูกต้อง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.