यह काम करता है के साथ समारोह ...उपयोग decltype और std :: लैम्ब्डा
auto x = 4;
typedef decltype(x) x_t;
x_t y = 5;
... तो क्यों यह नहीं करता है?
int j = 4;
auto func = [&] (int i) { cout << "Hello: i=" << i << " j=" << j << endl;};
typedef decltype(func) lambda_t;
lambda_t func2 = [&] (int i) { cout << "Bye: i=" << i << " j=" << j << endl;};
... और कैसे मैं घोषणा करेंगे lambda_t
मैन्युअल std :: समारोह का उपयोग कर?
आप निश्चित रूप से इस प्रकार की घोषणा के साथ lambdas टाइप कर सकते हैं। –
@ आर। मार्टिन्हो फर्नांडीस सवाल पूछता है कि 'decltype (func)' कुछ अनुपयोगी कचरे के बजाय 'std :: function' वापस नहीं लौटाता है? –
learnvst
@learnvst: इसे क्यों चाहिए? 'decltype' घोषित प्रकार देता है, और एक लैम्ब्डा * नहीं * एक' std :: function' है। इसके अलावा, 'std :: function' में अन्य चीजों के साथ प्रदर्शन प्रभाव पड़ता है, टाइप-एरर के लिए धन्यवाद। – Xeo