Depuis boost::shared_ptr
pourrait être appelé très fréquemment et renvoie simplement un pointeur, n'est pas l'opérateur ->
un bon candidat pour être inlined
?Pourquoi l'opérateur boost :: shared_ptr -> n'est-il pas déclaré inline?
T * operator->() const // never throws
{
BOOST_ASSERT(px != 0);
return px;
}
Est-ce qu'un bon compilateur automatiquement inline
cela de toute façon?
Est-ce que je devrais perdre le sommeil au-dessus de ceci? :-)
De nos jours, un bon compilateur d'optimisation fera un meilleur travail que vous de décider ce qui doit être en ligne, donc ignorera le mot-clé 'inline'. –
@Blue: Ignorez la partie inline, de toute façon. Mais vous avez raison: les compilateurs intègrent complètement le mot-clé 'inline'. Aucune des fonctions 'inline' et' inline''d ne peut être inline. – GManNickG
@ BlueRaja-DannyPflughoeft, @GMan: vous êtes trop généraliser un peu. Si vous ne pouvez pas vous permettre de compiler avec l'optimisation complète activée (pour quelque raison que ce soit), vous voudrez peut-être contrôler quelles fonctions doivent être intégrées ou non. Alors "inline" devient moins pertinent. Je ne suis pas un expert, mais je suppose que c'est l'une des raisons pour lesquelles le mot-clé existe. –