Thread overview
How to convert this code: (is(ToString(t))
May 08, 2016
Pablo
May 08, 2016
wobbles
May 08, 2016
Peter Häggman
May 09, 2016
Pablo
May 08, 2016
This is part of the old dparse.d file:

private import std.string : ToString = toString ;

	char[] string()
	{
		static if(str)
		{
			static if(is(T == char[]))
				return t;
			else static if(is(ToString(t)))
				return ToString(t);
			else
				return "<<"~T.stringof~">>";
		}
		else
			return "<<"~T.stringof~">>";
	}

I have a problem with this part:  (is(ToString(t)) :
dparse.d(215): Error: function declaration without return type. (Note that constructors are always named 'this')

How to fix this code?

Regards
Pawel

May 08, 2016
On Sunday, 8 May 2016 at 18:55:58 UTC, Pablo wrote:
> This is part of the old dparse.d file:
>
> private import std.string : ToString = toString ;
>
> 	char[] string()
> 	{
> 		static if(str)
> 		{
> 			static if(is(T == char[]))
> 				return t;
> 			else static if(is(ToString(t)))
> 				return ToString(t);
> 			else
> 				return "<<"~T.stringof~">>";
> 		}
> 		else
> 			return "<<"~T.stringof~">>";
> 	}
>
> I have a problem with this part:  (is(ToString(t)) :
> dparse.d(215): Error: function declaration without return type. (Note that constructors are always named 'this')
>
> How to fix this code?
>
> Regards
> Pawel

I think (THINK!!) you could use __traits(compiles, ToString(t)) in place of the is(ToString(t)).

Unless all objects have an implicit toString? In which case it will always return true and be a useless check.
On the phone and couldn't check properly...
May 08, 2016
On Sunday, 8 May 2016 at 18:55:58 UTC, Pablo wrote:
> This is part of the old dparse.d file:
>
> private import std.string : ToString = toString ;
>
> 	char[] string()
> 	{
> 		static if(str)
> 		{
> 			static if(is(T == char[]))
> 				return t;
> 			else static if(is(ToString(t)))
> 				return ToString(t);
> 			else
> 				return "<<"~T.stringof~">>";
> 		}
> 		else
> 			return "<<"~T.stringof~">>";
> 	}
>
> I have a problem with this part:  (is(ToString(t)) :
> dparse.d(215): Error: function declaration without return type. (Note that constructors are always named 'this')
>
> How to fix this code?
>
> Regards
> Pawel

You must replace with

"static if (is(typeof(to!string(t))));"
May 09, 2016
On Sunday, 8 May 2016 at 22:34:34 UTC, Peter Häggman wrote:
> On Sunday, 8 May 2016 at 18:55:58 UTC, Pablo wrote:
>> This is part of the old dparse.d file:
>>
>> private import std.string : ToString = toString ;
>>
>> 	char[] string()
>> 	{
>> 		static if(str)
>> 		{
>> 			static if(is(T == char[]))
>> 				return t;
>> 			else static if(is(ToString(t)))
>> 				return ToString(t);
>> 			else
>> 				return "<<"~T.stringof~">>";
>> 		}
>> 		else
>> 			return "<<"~T.stringof~">>";
>> 	}
>>
>> I have a problem with this part:  (is(ToString(t)) :
>> dparse.d(215): Error: function declaration without return type. (Note that constructors are always named 'this')
>>
>> How to fix this code?
>>
>> Regards
>> Pawel
>
> You must replace with
>
> "static if (is(typeof(to!string(t))));"

Thanks!
Pawel