Struct toString works but not std.conv.to!string
Ali Çehreli via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Oct 13 15:21:42 PDT 2015
On 10/13/2015 02:07 PM, Nordlöw wrote:
> I have defined a struct UTCOffset in
>
> https://github.com/nordlow/justd/blob/master/datetime_ex.d
>
> Everything works as desired except for
>
> import std.conv : to;
> assert(UTCOffset(+14, 0).to!string == "UTC+14:00");
>
> which fails as
>
> /usr/include/dmd/phobos/std/conv.d(293,14): Error: template instance
> isRawStaticArray!() does not match template declaration
> isRawStaticArray(T, A...)
> datetime_ex.d(129,29): Error: cannot resolve type for
> UTCOffset(cast(ubyte)0u).this(cast(byte)14, cast(ubyte)0u).to!string
>
> I don't understand what's wrong.
Reduced with a workaround:
struct UTCOffset
{
import std.conv : to; // Move to module scope to compile
string toString() const
{
return "hello";
}
}
void main() {
import std.conv : to;
UTCOffset().to!string;
}
This is an issue that I know to be known. :) I think it is about private
definitions (isRawStaticArray) of modules not working outside? or when
in inner scopes? Something like that...
Ali
More information about the Digitalmars-d-learn
mailing list