Le blog d'un informaticien passionné de partage, d'échanges et surtout, pas si zéro que ça.
C’est une astuce que j’avais trouvé il y a quelques temps déjà en écrivant un tutoriel sur RAII en C++, mais que j’ai envie de partager avec vous parce que c’est simple mais astucieux. Grâce à un lambda, on peut initialiser une variable déclarée constante, alors que sa valeur dépend d’une condition.
#include <iostream>
struct Test
{
	Test(int number)
		: number(number)
	{
	}
	int number;
};
int main()
{
	const Test a(1);
	const Test f = [&]
	{
		Test f(6);
		if (a.number == 1)
		{
			f = Test(42);
		}
		return f;
	}();
	std::cout << "Valeur de f : " << f.number << std::endl;
	// Erreur, f est constant !
	//f.number = 5;
	return 0;
}L’exemple est bateau, mais illustre bien la puissance des lambdas. Heureusement que cette fonctionnalité puissante est standard en C++ depuis 6 ans !