Problem with Variant

2013-06-28 Thread develop32

void main()
{
struct Vector
{
float length();
}

import std.variant;
Variant v = Vector();
}

Currently this does not work, as it seems Variant thinks length() 
is a property restricted to arrays.


"cannot implicitly convert expression ((*zis).length()) of type 
float to int	C:\D\dmd2\src\phobos\std\variant.d	488"


I quickly changed that line in variant.do to "static if 
(is(typeof(zis.length)) && is(ReturnType!(zis.length) == 
size_t))" and my code compiles.


Currently its a hack, but should it be more developed and would 
it not interfere with something else?


Re: Problem with Variant

2013-06-28 Thread Andrei Alexandrescu

On 6/28/13 4:27 PM, develop32 wrote:

void main()
{
struct Vector
{
float length();
}

import std.variant;
Variant v = Vector();
}

Currently this does not work, as it seems Variant thinks length() is a
property restricted to arrays.

"cannot implicitly convert expression ((*zis).length()) of type float to
int C:\D\dmd2\src\phobos\std\variant.d 488"

I quickly changed that line in variant.do to "static if
(is(typeof(zis.length)) && is(ReturnType!(zis.length) == size_t))" and
my code compiles.

Currently its a hack, but should it be more developed and would it not
interfere with something else?


Could you please paste your note into a bug report? In a perfect world 
you may want to also submit a pull request!


Thanks,

Andrei


Re: Problem with Variant

2013-06-28 Thread Jonathan M Davis
On Friday, June 28, 2013 17:14:22 Andrei Alexandrescu wrote:
> Could you please paste your note into a bug report? In a perfect world
> you may want to also submit a pull request!

Well, he can do that in an _imperfect_ world too... ;)

- Jonathan M Davis


Re: Problem with Variant

2013-06-29 Thread develop32
On Saturday, 29 June 2013 at 00:14:19 UTC, Andrei Alexandrescu 
wrote:
Could you please paste your note into a bug report? In a 
perfect world you may want to also submit a pull request!


Filled a bug
http://d.puremagic.com/issues/show_bug.cgi?id=10500

And I'll try to make world a better place too...