Creating a template mixin for explicit casts.

Meta jared771 at gmail.com
Thu May 17 16:42:56 UTC 2018


On Thursday, 17 May 2018 at 15:25:37 UTC, Sjoerd Nijboer wrote:
> Given the following code
> `struct Foo(T)
> 	if(isNumeric!T)
> {
> 	T t;
> 	.. other code
> }
>
> struct Bar(T)
> 	if(isNumeric!T)
> {
> 	T t;
> 	.. other code
> }
>
> Foo!float foo_float;
>
> Foo!double foo_double;
>
> Bar!float bar_float;
> `
>
> I want to make a template mixin that is able to cast one of 
> these generic structs to the other explicitly. I have a bunch 
> of these structs and therefore I thought it would make sense to 
> do it by template mixin. I just don't know what language or 
> library features I need to use and how to apply them.
>
> `
> fooDouble = cast (Foo!double) foo_float;		// case [1] if 
> possible, done by
> 							// an implicit cast. Else by
> 							//explicit.
>
> fooFloat = cast (Foo!float) foo_double;			// case [2]
>
> barFloat = cast (Bar!float) foo_float;			// case [3]
> `
>
> How would I do this in D?

Before you write anything yourself, check whether 
std.conv.castFrom does what you need:

https://dlang.org/phobos/std_conv.html#castFrom


More information about the Digitalmars-d-learn mailing list