[LLVMdev] inlining hint
Cédric Venet
cedric.venet at laposte.net
Thu Aug 27 06:53:59 PDT 2009
David Vandevoorde a écrit :
> On Aug 27, 2009, at 3:07 AM, Cédric Venet wrote:
>
>
>> David Vandevoorde a écrit :
>>
>>> I don't think those are _good_ reasons though: If one doesn't want
>>> a C+ + function to be inlined, one shouldn't define it inline.
>>>
>>>
>>>
>> You must not have written a lot of C++ template then.
>>
>
> (Ha!)
>
:) ok, your name didn't register at first, but I have read (part of)
your book. sorry for the tone of my reply which was not very friendly
(It happen often to me with mail, but this is not an excuse). I just
didn't and still don't understand how you do it, but this is probably
not the good place to discuses this.
please accept my sincere apologies.
>
> I don't think that how standard library or STL headers _are_ written
> determines how they _should be_ written.
>
> (Templates don't force us to write excessive inline functions: Leave
> off the inline keyword and write a member function outside the class
> template definition, and it's no longer an inline function.)
>
What about multiple translation unit then? because from my
understanding, this will generate multiple definition of symbol, so you
will never be able to link it (except with some strange link
specification (weak or something like this) which seem less portable
than declaring the function inline). From the standard:
Every program shall contain exactly one definition of every
non-inline function or object that is used in that
program; no diagnostic required. The definition can appear
explicitly in the program, it can be found in the
standard or a user-defined library, or (when appropriate) it is
implicitly defined (see 12.1, 12.4 and 12.8).
An inline function shall be defined in every translation unit in
which it is used.
regards,
Cédric
More information about the llvm-dev
mailing list