Thread overview
Trouble with std.Variant
Sep 18, 2014
ddos
Sep 18, 2014
ddos
Sep 18, 2014
Ali Çehreli
Sep 19, 2014
Nicolas Sicard
September 18, 2014
struct Vec2
{
	float[2] vec;

	public float length()
	{
		return sqrt(vec[0]*vec[0]+vec[1]*vec[1]);
	}
}

int main(string[] argv)
{
	Vec2 test;
	Variant v = test;
    return 0;
}
September 18, 2014
The following code fails because Vec2.length() does not return int ... so Variant is only usable with types that do not have a method with name length() ?? i'm confused

On Thursday, 18 September 2014 at 21:03:47 UTC, ddos wrote:
> struct Vec2
> {
> 	float[2] vec;
>
> 	public float length()
> 	{
> 		return sqrt(vec[0]*vec[0]+vec[1]*vec[1]);
> 	}
> }
>
> int main(string[] argv)
> {
> 	Vec2 test;
> 	Variant v = test;
>     return 0;
> }

September 18, 2014
On 09/18/2014 02:06 PM, ddos wrote:
> The following code fails because Vec2.length() does not return int ...
> so Variant is only usable with types that do not have a method with name
> length() ?? i'm confused
>
> On Thursday, 18 September 2014 at 21:03:47 UTC, ddos wrote:
>> struct Vec2
>> {
>>     float[2] vec;
>>
>>     public float length()
>>     {
>>         return sqrt(vec[0]*vec[0]+vec[1]*vec[1]);
>>     }
>> }
>>
>> int main(string[] argv)
>> {
>>     Vec2 test;
>>     Variant v = test;
>>     return 0;
>> }
>

Compiles and runs without error with dmd git head, after adding the following two lines: ;)

import std.math;
import std.variant;

Ali

September 19, 2014
On Thursday, 18 September 2014 at 21:14:55 UTC, Ali Çehreli wrote:
> On 09/18/2014 02:06 PM, ddos wrote:
>> The following code fails because Vec2.length() does not return int ...
>> so Variant is only usable with types that do not have a method with name
>> length() ?? i'm confused
>>
>> On Thursday, 18 September 2014 at 21:03:47 UTC, ddos wrote:
>>> struct Vec2
>>> {
>>>    float[2] vec;
>>>
>>>    public float length()
>>>    {
>>>        return sqrt(vec[0]*vec[0]+vec[1]*vec[1]);
>>>    }
>>> }
>>>
>>> int main(string[] argv)
>>> {
>>>    Vec2 test;
>>>    Variant v = test;
>>>    return 0;
>>> }
>>
>
> Compiles and runs without error with dmd git head, after adding the following two lines: ;)
>
> import std.math;
> import std.variant;
>
> Ali

It shouldn't work in dmd git head. See Andrei's answer in
https://issues.dlang.org/show_bug.cgi?id=5501