आपके पास कोई auto
पैरामीटर नहीं हो सकता । आपके पास मूल रूप से दो विकल्प हैं:
विकल्प # 1: std::function
जैसा आपने दिखाया है उसका उपयोग करें ।
विकल्प # 2: टेम्पलेट पैरामीटर का उपयोग करें:
template<typename F>
void f(F &lambda) { }
विकल्प # 2, कुछ मामलों में, अधिक कुशल हो सकता है, क्योंकि यह एम्बेडेड लैम्ब्डा फ़ंक्शन ऑब्जेक्ट के लिए संभावित हीप आवंटन से बच सकता है, लेकिन यह तभी संभव है जब f
इसे हेडर में टेम्प्लेट फ़ंक्शन के रूप में रखा जा सकता है। यह किसी भी टेम्प्लेट के रूप में संकलन समय और I-कैश फुटप्रिंट भी बढ़ा सकता है। ध्यान दें कि इसका कोई प्रभाव नहीं हो सकता है, जैसे कि लैम्ब्डा फ़ंक्शन ऑब्जेक्ट काफी छोटा है यह std::function
ऑब्जेक्ट में इनलाइन का प्रतिनिधित्व कर सकता है ।
const&
?