How to convert this code: (is(ToString(t))

wobbles via Digitalmars-d digitalmars-d at puremagic.com
Sun May 8 14:57:57 PDT 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...


More information about the Digitalmars-d mailing list