Pehle aap std::function aur std::bind samjho, usse pehle aapko us vocabulary mein fluent hona chahiye jo parent note assume karta hai. Yeh page un sab cheezein ek-ek karke zero se build karta hai — ek smart 12-saal ka baccha jo C++ kabhi chhuaa nahi usne bhi yeh padhke parent note line by line padh saakna chahiye.
Figure dekho: arguments2 aur 3 parentheses ke zariye andar jaate hain, function body apna kaam karti hai, aur return value5bahar aati hai. Is poore page ki har cheez us choti machine ko — us box ko — capture karne aur idhar-udhar move karne ke baare mein hai.
Free function add ka type int(*)(int,int) likha jaata hai — padho "pointer to a function taking two ints, returning int". Yeh directly agle symbol par le jaata hai.
Figure mein yellow box p mein adding machine nahi hai; usme usri arrow hai. p(2,3) likhne par arrow follow hota hai aur add run hota hai. Full treatment ke liye dekho Function Pointers.
Figure mein teen alag shapes ke plugs dikhte hain (function pointer, lambda, functor) — sab ek adapter mein fit ho rahe hain — woh adapter hai std::function. Downstream code sirf adapter ki socket shape (signature) dekhta hai, peeche ka plug nahi.
Har arrow kehta hai "right wali idea samajhne ke liye left wali idea chahiye". Notice karo ki std::function aur std::bind dono parent topic the parent topic ke bilkul neeche baithe hain — yeh aakhri do bricks hain.
Khud test karo — right side chhupaao aur zor se jawab do.
"Function call karna" ka kya matlab hai?
Uska naam aur parentheses mein inputs likho; uske code par jump karo, run karo, return value waapas lo.
Kisi function ki signature kya hoti hai?
Uska return type plus uske parameter types, likha R(Args...).
Do alag lambdas ek variable share kyun nahi kar sakte?
Har lambda ka apna unique unnamed type hota hai, aur C++ ko ek variable ke liye ek type chahiye.
Function pointer kya hota hai?
Ek variable jo kisi function ka memory address hold karta hai, taaki aap function ko uske through call kar sako.
Kisi object ko functor kya banata hai?
Woh operator() define karta hai, toh aap ise obj(args) ki tarah invoke kar sako.
Har member function ko kaunsa hidden argument milta hai?
Woh object jis par woh run karta hai, jise this kehte hain, ek secret first parameter ke roop mein.
Type erasure kya hai?
Kisi value ke concrete type ko ek uniform interface ke peeche chhupaana — yahan, "mujhe Args... ke saath call kar sakte ho aur R milega".
Placeholder _2 ka kya matlab hai?
Woh doosra argument jo caller baad mein bound object call karte waqt supply karega.
std::ref ki zaroorat kyun hai?
Kyunki std::bind arguments ko value se copy karta hai; std::ref(x) reference store karta hai taaki wahi object share ho.
Is poore topic ki ek-line idea kya hai?
std::function ek uniform box hai jo kisi diye gaye signature ke kisi bhi callable ko store karta hai; std::bind uske kuch arguments pehle se fill kar deta hai.