Προς το περιεχόμενο

tr1 της ms και lambda expressions


Evgenios1

Προτεινόμενες αναρτήσεις

Δημοσ.

Πως θα περασω μια εξωτερικη μεταβλητη σε "δευτεροβαθμια lambda (?)"

πχ

>#include <algorithm>
#include <functional>

void foo(std::function<void(void)> f)
{
throw L"not imp";
}
int _tmain(int argc, _TCHAR* argv[])
{
int val=0;
foo([&val]
{
	val++;
[color="Red"]	foo([&val]
	{
		val++;
	});[/color]
});
return 0;
}

Στο κοκκινο δε μου το δεχεται. Φυσικα αν κανω καποιο αντιγραφο στη πρωτη lambda θα το περασει.

κατι τετοιο

>#include <algorithm>
#include <functional>

void foo(std::function<void(void)> f)
{
throw L"not imp";
}
int _tmain(int argc, _TCHAR* argv[])
{
int val=0;
foo([&val]
{
	val++;
	int tmpval = val;
	foo([&tmpval]
	{
		tmpval++;
	});
});
return 0;
}

 

Γινετε με καποιο αλλο τροπο να το περασω (εκτος του να ειναι global ή με αντιγραφο)

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...