First Draft: Implicit Type Template Instantiation via Constructors

Meta jared771 at gmail.com
Wed May 14 06:46:09 UTC 2025


On Tuesday, 13 May 2025 at 06:06:54 UTC, Sebastiaan Koppe wrote:
> On Wednesday, 12 March 2025 at 00:20:55 UTC, Meta wrote:
>> This DIP is a partial resurrection of DIP 40 
>> (https://wiki.dlang.org/DIP40) by me and Dennis Korpel. Dennis 
>> is working on the implementation 
>> (https://github.com/dlang/dmd/pull/16910) while I am writing 
>> the DIP.
>>
>> The purpose of this DIP is to propose a new avenue for 
>> Implicit Template Instantiation (ITI) via constructors. 
>> Currently (that I'm aware of) D only does Implicit _Function_ 
>> Template Instantiation (IFTI); the proposal is to extend this 
>> implicit instantiation to types as well, via their 
>> constructors.
>>
>> [...]
>>
>> The DIP:
>> https://github.com/MetaLang/DIPs/blob/dip1050/DIPs/DIP1050.md
>
> Makes a lot of sense to me.
>
> What about implicit constructors though?
>
> ```
> struct Pair(T,U) {
>     T t;
>     U u;
> }
> void main() {
>     auto p = Pair(1,"string");
> }
> ```

That is not actually a constructor - it is struct literal syntax. 
I did not realize there was a difference either until recently.


More information about the dip.development mailing list