मैं इसएक समारोह है कि
template<typename T, typename U>
map<T,U> mapMapValues(map<T,U> old, T (f)(T,U))
{
map<T,U> new;
for(auto it = old.begin(); it != old.end(); ++it)
{
new[it->first] = f(it->first,it->second);
}
return new;
}
और विचार की तरह एक विधि है कि आप इसे इस
BOOST_AUTO_TEST_CASE(MapMapValues_basic)
{
map<int,int> test;
test[1] = 1;
map<int,int> transformedMap = VlcFunctional::mapMapValues(test,
[&](int key, int value) -> int
{
return key + 1;
}
);
}
की तरह फोन करता हूँ हालांकि मैं त्रुटि मिलती है तर्क के रूप में एक लैम्ब्डा अभिव्यक्ति स्वीकार करता लिखें : फ़ंक्शन टेम्पलेट का कोई उदाहरण "VlcFunctional :: mapMapValues" तर्क सूची तर्क प्रकारों से मेल खाता है: (std :: map, std :: allocator >>, __lambda1)
कोई विचार क्या मैं गलत कर रहा हूं? विजुअल स्टूडियो 2008 और इंटेल C++ कम्पाइलर 11.1
के रूप में एक समारोह के पारित करने के लिए के कुछ उदाहरण है 'new' एक कीवर्ड आप एक चर' new' – Motti
haha कहा जाता है नहीं कर सकते। हां अच्छी तरह से देखा गया है, क्योंकि कोड सही टेम्पलेट तर्क नहीं ढूंढ रहा था, यह वास्तव में कभी संकलित नहीं हुआ था इसलिए संकलक ने मुझे यह इंगित करने के लिए कभी परेशान नहीं किया :) –
मुझे यकीन नहीं है कि लैम्ब्डा फ़ंक्शन के लिए "-> int" की आवश्यकता है – serup