"Inlining" et "Duplicate Symbols" sont des choses différentes. La inline
Les mots clés autorisent explicitement plusieurs définitions (c.-à-d. Il vous exempte de la règle à une définition), de sorte que la plate-forme (compilateur et linker) doit savoir comment gérer et déduir.
(Cela se produit tout le temps pour les fonctions de membres de la classe définies dans les en-têtes.)
Si tu veux juste génération de code Pour se produire, vous pouvez stocker l'adresse de la fonction quelque part:
auto fp = my_inline;
De cette façon, le compilateur doit générer une définition de la fonction, afin de pouvoir lui donner une adresse. Mais même si vous faites cela dans chaque unité de traduction, vous n'obtiendrez pas d'erreur de liaison, car cela sera dédupliquée au moment du lien. L'exigence selon laquelle toutes les définitions sont identiques garantissent que cela est bien défini.