CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C++0x] Fonction lambda

4223161584
4223161584
Niveau 10
17 août 2010 à 21:13:19

Bonjour à tous !

Je me demandais avec l'arrivé des nouvelles fonctions lambdas, je me pose quelques questions. Un ami me disait que les lambdas était similaire à des fonctions pointeurs et que par conséquent, elles ne supportent pas l'inlining. J'ai pas trouvé l'information dans le standard, quelqu'un saurait où chercher? Je suis moi-même persuadé que c'est inliné.

De plus, encore une fois, selon ce qu'on m'a dit, il n'y a aucune différence entre ces deux codes en ce qui concerne les lambdas :

1) auto lambda = [] (Object obj) {/*...*/};
2) auto lambda = [] (const Object& obj) {/*...*/};

Il semblerait que les lambdas prennent automatiquement les objets par référence constante. Cependant, j'aimerais une confirmation.

Merci de votre aide !

godrik
godrik
Niveau 30
17 août 2010 à 21:28:52

C++0x n'est pas encore publie par l'ISO a ce que je sache. Donc definir ce qui est dans le standard et ce qui n'y est pas me parait difficile.

Personnellement, je vais attendre que la norme soit publiee et supportee (approximativement) par les compilateur intel et gnu avant de me poser plus de question.

dnob700
dnob700
Niveau 10
17 août 2010 à 22:12:19

La norme a été finalisé (même si elle n'est pas encore publié). Je ne sais pas si elle détailleras ce genre de chose, mais dans les cas général, où les fonction lambda (...) sont utiles, il n'est pas possible des les inliner car tu ne sais pas d'où vient le code (c'est assez proche d'un pointeur de fonction effectivement). Évidemment, si un programmeurs C++ les utilise juste comme des fonctions locales alors il n'y a pas de raison que les compilo n'optimisent pas le code en les inlinant.

Pour ton autre question, elle est bien trop technique pour moi et là le mieux est probablement de lire le draft le plus récent de la norme (qui est gratuit contrairement à ce que sera la norme).

godrik
godrik
Niveau 30
17 août 2010 à 22:23:05

En effet, je ne savais pas qu'ils avaient tant avance. Selon wikipedia ( http://en.wikipedia.org/wiki/C%2B%2B0x ) :

The ISO/IEC JTC1/SC22/WG21 C++ Standards Committee's current schedule is to finish balloting the final committee draft by August of 2010, and to complete the final draft international standard during the March 2011 standards meeting.[1] However, WG21 expects it to take six months to a year before the standard is officially published by ISO, leading to its publication by the end of 2011.[2] To be able to finish on schedule, the Committee decided to focus its efforts on the solutions introduced up until 2006 and ignore newer proposals.[3]

_skip
_skip
Niveau 10
18 août 2010 à 08:27:22

Tu rajoutes 5 ans pour que ce soit implémenté de façon consistante chez tout le monde...

4223161584
4223161584
Niveau 10
18 août 2010 à 10:59:41

5 ans, c'est très sympa comme estimation. Par contre, je pense que d'ici 2 ou 3 ans, même pas, ça sera implémenté chez GCC et VC++, les autres compilateurs prennent plus de temps.

Mais c'est bon, j'ai trouvé l'information sur msdn : les lambdas se font inliner tout comme les foncteurs et possèdent exactement les mêmes propriétés que les foncteurs, ce qui est magnifique ! L'avantage des lambdas par rapport aux foncteurs, c'est qu'elles permettent principalement d'écrire des codes plus courts.

J'ai hâte que les compilateurs supportent ce nouveau standard questions de raccourcir nos codes et de coder encore plus rapidement.

Merci de votre aide !

godrik
godrik
Niveau 30
18 août 2010 à 17:29:33

"Par contre, je pense que d'ici 2 ou 3 ans, même pas, ça sera implémenté chez GCC et VC++, les autres compilateurs prennent plus de temps."

arf, g++ n'implemente toujours pas le C++03...

4223161584
4223161584
Niveau 10
18 août 2010 à 17:45:43

Le C++03 n'apportait rien aussi. Rien de vraiment pertinent et important, à mes yeux. Tandis que C++0x, c'est quand même énormément d'améliorations vraiment importantes; je pense aux variadic template.

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment