BonjourJe suis de la team "const autant que possible". Donc, dès que je vois une déclaration de variable à laquelle je peux ajouter const, je le fais.
Je fais une exception à cette règle : quand je stocke une lambda expression, je n'ajoute jamais const. Je fais auto foo = []() {}; et non const auto foo = []() {};.
Pourtant, en suivant la logique "const autant que possible", je devrais aussi utiliser const dans cette situation.
PS : pour celles et ceux qui ne savent pas, on ne peut changer la valeur de la variable :
| Code : | Sélectionner tout |
1 2 3 4 | int main() {
auto f = []() {};
f = []() {};
} |
| Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 | <source>:3:7: error: no viable overloaded '='
3 | f = []() {};
| ~ ^ ~~~~~~~
<source>:2:14: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from '(lambda at <source>:3:9)' to 'const (lambda at <source>:2:14)' for 1st argument
2 | auto f = []() {};
| ^
1 error generated.
Compiler returned: 1 |
| Code : | Sélectionner tout |
1 2 3 4 5 | int main() {
auto f = []() {};
auto g = f;
f = g;
} |
| Code : | Sélectionner tout |
1 2 3 4 5 6 | <source>:4:6: error: object of type '(lambda at <source>:2:14)' cannot be assigned because its copy assignment operator is implicitly deleted
4 | f = g;
| ^
<source>:2:14: note: lambda expression begins here
2 | auto f = []() {};
| ^ |
Vous avez lu gratuitement 475 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.

