Ponieważ szablony są zdefiniowane w nagłówkach, a kompilator jest w stanie określić, czy wstawianie funkcji jest korzystne, czy ma to jakiś sens? Słyszałem, że nowoczesne kompilatory wiedzą lepiej, kiedy wstawić funkcję i ignorują podpowiedź inline
.Czy ma sens stosowanie inline keyword z szablonami?
edytuj: Chciałbym przyjąć obie odpowiedzi, ale nie jest to możliwe. Aby zamknąć ten problem, przyjmuję odpowiedź: phresnel, ponieważ otrzymała ona najwięcej głosów i ma formalne prawo, ale jak wspomniałem w komentarzach, uważam odpowiedzi i oraz jako odpowiedźrównież jako prawidłowe. z innego punktu widzenia.
Problem dotyczy semantyki C++, która nie jest ścisła w przypadku słowa kluczowego i inliningowego w przypadku słowa kluczowego inline
. phresnel mówi "napisz w linii, jeśli masz na myśli to", ale to, co w rzeczywistości oznacza inline
, nie jest jasne, ponieważ ewoluowało od pierwotnego znaczenia do dyrektywy, która "zatrzymuje kompilatory gadające o naruszeniach ODR", jak mówi Puppy.
Dotyczy to jawnych specjalizacji - są one jak zwykłe funkcje. Ale tutaj -> 'szablon wbudowany T g (T) {}' wbudowany nie jest wymagany i mógłbyś napisać 'szablon T g (T) {}' –
doc
Można by napisać, prawda. Ale to nie implikuje inności, nawet jeśli wygląda tak. Vandevoorde i Josuttis również stwierdzają dokładnie, że w szablonach _C++: Kompletny Guide_ –
Jest nieco słabsze stwierdzenie, że szablony mogą mieć wiele definicji (3.2/5) -> http://stackoverflow.com/a/10211420/205955 Zgadzam się, że nie oznacza to, że są one formalnie wbudowane. Jednak wszystko sprowadza się do tego w praktyce. Tak więc obie odpowiedzi są poprawne z różnych punktów widzenia. – doc