Can anyone provide an example of how D templates are overridable by global symbols?
Ali Çehreli
acehreli at yahoo.com
Sat Jan 29 01:05:53 UTC 2022
On 1/28/22 16:17, Siarhei Siamashka wrote:
> On Friday, 28 January 2022 at 23:43:00 UTC, H. S. Teoh wrote:
>> You don't have to rely on any opinions. Try it out yourself and find
>> out for sure.
>
> I guess, my problem and the source of all confusion is that I'm way too
> used to developing C++ code.
I am confused too. Weak symbols are a concept beyond D and C++ so it
should be the same with C++. Testing, the following C++ program does
compile foo<int> as a weak symbol as well:
template <class T>
void foo() {
}
int main() {
foo<int>();
}
> And in the C++ ecosystem your
> recommendation is a recipe for disaster.
And it is.
> It's absolutely necessary to
> have perfect understanding about what's going on and which guarantees
> are provided.
Good luck with that. :) There aren't many people who know what linkers
and loaders actually do.
> Accidentally relying on undefined behavior will backfire,
> because [Murphy's law](https://en.wikipedia.org/wiki/Murphy%27s_law) is
> unfortunately very real.
Yes.
What Johan said makes the most sense to me: The onus of ensuring ODR is
on the user. Given the state of languages and linkers, I have to ensure
that.
Ali
More information about the Digitalmars-d-learn
mailing list