Concepts like c++20 with specialized overload resolution.
vushu
danvu.hustle at gmail.com
Sat May 27 17:49:27 UTC 2023
On Saturday, 27 May 2023 at 16:38:43 UTC, Steven Schveighoffer
wrote:
> On 5/27/23 9:50 AM, vushu wrote:
>> On Saturday, 27 May 2023 at 13:42:29 UTC, Basile B. wrote:
>>> [...]
>>
>> Yes I know there is template constraint, but not with
>> specialized overloading right?
>>
>> so you need to use static if for checking if it hasmagma.
>
> What is missing is an "else" thing.
>
> So you have to repeat the constraint (as a negation)
> unfortunately.
>
> e.g.:
>
> ```d
> struct LavaMan {
> void magma() { writeln(" LavaMan is throwing LAVA"); }
> }
>
> struct FakeVulcano {
> void try_making_lava() { writeln(" Making fake lava"); }
> };
>
> void make_lava(T)(ref T lava) if (hasMagma!T) {
> lava.magma();
> }
>
> void make_lava(T)(ref T lava_thing) if (!hasMagma!T){
> lava_thing.try_making_lava();
> }
> ```
>
> -Steve
I see thanks for the example :), I think this probably the
closest equivalent i dlang.
More information about the Digitalmars-d-learn
mailing list