https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114990

--- Comment #17 from cqwrteur <unlvsur at live dot com> ---
(In reply to Jason Merrill from comment #16)
> (In reply to cqwrteur from comment #15)
> > But it is not declaration, but definition. The actual implementation
> > duplicates twice.
> 
> Definitions are also merged.
> 
> > For translation units, inline function will get discarded in different
> > translation units and keep only one of them as weak symbol. I don't think
> > this applies to module
> 
> Within the global module it does; importing discards duplicate definitions
> much like the linker.

But does that apply to classes, templates or template specialization, etc.?

If someone writes a function=delete while in a module, it does not. Does it get
discarded?

Because for type_traits, unless the template specialization also gets
discarded, this won't work. I don't think other compilers are working here,
either. C++ standard never clarifies it but asks all inline function not to be
inline semantics.

Reply via email to