दुर्भाग्य से , वे C ++ 11 ( http://ideone.com/NsqYuq ) का हिस्सा नहीं हैं :
auto glambda = [](auto a) { return a; };
int main() {}
जी ++ 4.7 के साथ:
prog.cpp:1:24: error: parameter declared ‘auto’
...
हालाँकि , जिस तरह से इसे C ++ 14 में कार्यान्वित किया जा सकता है वह सामान्य लैम्बडा के लिए पोर्टलैंड के प्रस्ताव के अनुसार है :
[](const& x, & y){ return x + y; }
यह सबसे बड़ा हिस्सा एक सामान्य फ़नकार वर्ग के सामान्य निर्माण के लिए निकलेगा, लेकिन प्रकारों की कमी के साथ कंपाइलर एक अस्थायी सदस्य को बाहर कर देगा- operator()
:
struct anonymous
{
template <typename T, typename U>
auto operator()(T const& x, U& y) const -> decltype(x+y)
{ return x + y; }
};
या नए प्रस्ताव के अनुसार जेनेरिक (पॉलीमॉर्फिक) लैम्ब्डा एक्सप्रेशंस के लिए प्रस्ताव
auto L = [](const auto& x, auto& y){ return x + y; };
--->
struct /* anonymous */
{
template <typename T, typename U>
auto operator()(const T& x, U& y) const // N3386 Return type deduction
{ return x + y; }
} L;
हां, मापदंडों के हर क्रमपरिवर्तन के लिए, एक नई तात्कालिकता उत्पन्न होगी, हालांकि, उस फ़नकार के सदस्यों को अभी भी साझा किया जाएगा (यानी कैप्चर किए गए तर्क)।