Concepts like c++20 with specialized overload resolution.

H. S. Teoh hsteoh at qfbox.info
Sat May 27 19:52:50 UTC 2023


On Sat, May 27, 2023 at 05:49:27PM +0000, vushu via Digitalmars-d-learn wrote:
> On Saturday, 27 May 2023 at 16:38:43 UTC, Steven Schveighoffer wrote:
[...]
> > 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();
> > }
[...]
> I see thanks for the example :), I think this probably the closest
> equivalent i dlang.

You can also use static if inside the function, which will give you an
if-then-else structure:

	void make_lava(T)(ref T lava) {
		static if (hasMagma!T) {
			lava.magma();
		} else {
			lava_thing.try_making_lava();
		}
	}


T

-- 
Written on the window of a clothing store: No shirt, no shoes, no service.


More information about the Digitalmars-d-learn mailing list