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 !