C++ constexpr funkcia (prípadne metóda) vs inline funkcia

Je nejaký rozdiel medzi constexpr funkciou a inline funkciou? Alebo je to to isté? A ak je tak aký?


anonacct

Re:C++ constexpr funkcia (prípadne metóda) vs inline funkcia
« Odpověď #1 kdy: 10. 08. 2021, 20:12:01 »
Je toto fakt otázka, na kterou nedokážeš najít odpověď na internetu?

Nechci se navážet, ale toto je fakt trochu triviální otázka.

Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:C++ constexpr funkcia (prípadne metóda) vs inline funkcia
« Odpověď #2 kdy: 10. 08. 2021, 22:07:36 »
Je toto fakt otázka, na kterou nedokážeš najít odpověď na internetu?

Nechci se navážet, ale toto je fakt trochu triviální otázka.

To je tak těžké odpovědět na takovou triviální otázku?


Re:C++ constexpr funkcia (prípadne metóda) vs inline funkcia
« Odpověď #4 kdy: 12. 08. 2021, 11:21:12 »
Constexpr označuje funkce, které lze spustit už při kompilaci a do binárky zapsat jenom jejich výsledek.
Standard c++ říká "it is possible to evaluate the value of the function or variable at compile time", takže jako obvykle záleži na implementaci kompilátoru, jestli constexpr spustí nebo ne.

Inline je hint pro kompilátor, aby volání funkce nahradil přímo její implementací, což je optimalizace, kterou ale moderní kompilátory umí dělat samy a "inline" k tomu nepotřebují.
Důležitější vlastnosti inline se týkají kompilace a linkování, a zde tě spís odkážu na Stack Overflow:
https://stackoverflow.com/questions/1759300/when-should-i-write-the-keyword-inline-for-a-function-method


Re:C++ constexpr funkcia (prípadne metóda) vs inline funkcia
« Odpověď #5 kdy: 13. 08. 2021, 10:15:56 »
...

...

Ďakujem Vám za odpovede.

Nechci se navážet, ale toto je fakt trochu triviální otázka.

Ešte predtým som si o tom niečo hľadal. Akurát internet je plný poloprávd a nepresností. Diskusia je lepšia, tu keď niekto dá nepresné, alebo nesprávne vysvetlenie, tak ho ostatní opravia. A navyše, občas sa tu dozviem, aj ďalšie užitočné informácie, na ktoré ma ani nenapadlo sa pýtať.

Re:C++ constexpr funkcia (prípadne metóda) vs inline funkcia
« Odpověď #6 kdy: 13. 08. 2021, 16:54:53 »
Od toho jsou diskuzní fóra. Tady musím podpořit Kita. Co jednomu přijde jasné, u někoho vyvolává otázky. Žádný dotaz není hloupý. Divil byste se, kolik otázek, které třeba vyučující považoval za triviální, ho přivedlo do úzkých, když to měl někomu vysvětlit. Jen taková poznámka.