Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
August 05, 2012 casting from variant | ||||
---|---|---|---|---|
| ||||
In the following code: Variant j; j = 1.0; // make it a double auto x = cast(float)(j.get!(double)); // fail: cannot cast j.get!(double) auto y = cast(float)x; // fine The first attempt to cast doesn't compile, but the second less-direct cast is OK. Is that a bit strange? |
August 05, 2012 Re: casting from variant | ||||
---|---|---|---|---|
| ||||
Posted in reply to cal | On Sun, Aug 5, 2012 at 5:40 AM, cal <callumenator@gmail.com> wrote:
> In the following code:
>
> Variant j;
> j = 1.0; // make it a double
> auto x = cast(float)(j.get!(double)); // fail: cannot cast j.get!(double)
> auto y = cast(float)x; // fine
I think it's a property-like problem: you need () after .get!()
I had this problem a few days ago.
Variant j;
j = 1.0; // make it a double
auto x = cast(float)(j.get!(double)()); // fine
auto y = cast(float)x; // fine
|
August 05, 2012 Re: casting from variant | ||||
---|---|---|---|---|
| ||||
Posted in reply to Philippe Sigaud | On Sunday, 5 August 2012 at 06:31:37 UTC, Philippe Sigaud wrote:
> On Sun, Aug 5, 2012 at 5:40 AM, cal <callumenator@gmail.com> wrote:
>> In the following code:
>>
>> Variant j;
>> j = 1.0; // make it a double
>> auto x = cast(float)(j.get!(double)); // fail: cannot cast j.get!(double)
>> auto y = cast(float)x; // fine
>
> I think it's a property-like problem: you need () after .get!()
> I had this problem a few days ago.
>
>
> Variant j;
> j = 1.0; // make it a double
> auto x = cast(float)(j.get!(double)()); // fine
> auto y = cast(float)x; // fine
Ah thanks!, I didn't even think of that.
|
August 05, 2012 Re: casting from variant | ||||
---|---|---|---|---|
| ||||
Posted in reply to cal | On Sun, Aug 5, 2012 at 6:34 PM, cal <callumenator@gmail.com> wrote: >> Variant j; >> j = 1.0; // make it a double >> auto x = cast(float)(j.get!(double)()); // fine >> >> auto y = cast(float)x; // fine > > > Ah thanks!, I didn't even think of that. Btw, std.variant.Variant also offers a `.coerce` method: auto x = j.coerce!float; // fine No need of parenthesis on this one. See also `.convertsTo` http://dlang.org/phobos/std_variant.html#convertsTo |
August 05, 2012 Re: casting from variant | ||||
---|---|---|---|---|
| ||||
Posted in reply to Philippe Sigaud | On Sunday, 5 August 2012 at 18:04:41 UTC, Philippe Sigaud wrote:
> On Sun, Aug 5, 2012 at 6:34 PM, cal <callumenator@gmail.com> wrote:
>
>>> Variant j;
>>> j = 1.0; // make it a double
>>> auto x = cast(float)(j.get!(double)()); // fine
>>>
>>> auto y = cast(float)x; // fine
>>
>>
>> Ah thanks!, I didn't even think of that.
>
> Btw, std.variant.Variant also offers a `.coerce` method:
>
> auto x = j.coerce!float; // fine
>
> No need of parenthesis on this one.
>
> See also `.convertsTo`
>
> http://dlang.org/phobos/std_variant.html#convertsTo
Even better :)
|
Copyright © 1999-2021 by the D Language Foundation