Making template instantiations more lazy
Jonathan M Davis
newsgroup.d at jmdavisprog.com
Wed Oct 18 20:12:44 UTC 2017
On Wednesday, October 18, 2017 10:36:41 Per Nordlöw via Digitalmars-d-learn
wrote:
> On Wednesday, 18 October 2017 at 10:17:38 UTC, Biotronic wrote:
> > Make them templates, that should solve the problem:
> >
> > struct S(T) {
> >
> > void foo()() {
> >
> > compileerror;
> >
> > }
> >
> > }
>
> Yeah I've thought of that.
>
> I still would like to have it built-in to the compiler.
If you actually needed all of the member functions to fully exist, that
would make life a lot harder (e.g. if you're doing something with language
bindings and need to guarantee that a particular template instantiation
fully exists). And if you suddenly couldn't guarantee that everything within
a template was instantiated when the template was instantiated, then you
basically have code that looks like it exists but doesn't actually, and that
would make it rather difficult to know what code actually exists, whereas
right now, if you instantiate a template, you know exactly what code then
exists because of that instantiation.
At least with the ability to separately templatize member functions, you can
control what's going on.
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list