ฉันเข้าใจว่าแลมบ์ดาเป็นตัวชี้ฟังก์ชั่น เมื่อฉันทำการทดสอบต่อไปนี้ฉันพบว่ามันผิด ( สาธิต )
#define LAMBDA [] (int i) -> long { return 0; }
int main ()
{
long (*pFptr)(int) = LAMBDA; // ok
auto pAuto = LAMBDA; // ok
assert(typeid(pFptr) == typeid(pAuto)); // assertion fails !
}
รหัสข้างต้นหายไปจุดใด? ถ้าไม่เช่นtypeof
นั้นแลมบ์ดานิพจน์คืออะไรเมื่ออนุมานด้วยauto
คำหลัก?