Can anyone provide an example of how D templates are overridable by global symbols?

Siarhei Siamashka siarhei.siamashka at gmail.com
Thu Dec 9 20:53:52 UTC 2021


A quote of Iain Buclaw from 
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102765 about GDC 
behaviour:

> D semantics for template symbols is that they must be 
> overridable - even by normal global symbols.

> So in version 11.1, the default linkage for templates was 
> switched over to weak, and with that, you can't safely inline 
> them without violating ODR.

My (most likely wrong) interpretation of this is that the D 
language standard somehow makes it impossible to make template 
inlining decisions at the compilation stage and this job has to 
be delegated to the linker. And as a result, the use of LTO 
becomes required for generating fast binaries. Another 
implication is that fast incremental rebuilds of optimized 
binaries are likely highly problematic.

So I have two questions:

   1. What is the exact wording of the D language standard on this 
matter?

   2. How would one construct a simple example of a template 
symbol getting successfully overridden by a global symbol?

Thanks!


More information about the Digitalmars-d-learn mailing list