DMD producing huge binaries
Rene Zwanenburg via Digitalmars-d
digitalmars-d at puremagic.com
Fri May 20 08:39:18 PDT 2016
On Friday, 20 May 2016 at 12:08:37 UTC, ZombineDev wrote:
> @Rene
> How do you expect the compiler to know the exact return type,
> only by looking at this signature:
> auto transmogrify(string str);
>
> A possible implementation might be this:
> auto transmogrify(string str)
> {
> return str.map!someFunc.filter!otherFunc.joiner();
> }
>
> or something completly different.
I was thinking of something along the lines of this:
=======
size_t frobnicate(int i)
{
return 0;
}
auto frobnicator(T)(T t)
{
static struct Result
{
int index;
size_t front()
{
return frobnicate(index);
}
enum empty = false;
void popFront()
{
++index;
}
}
return Result(t.index);
}
=======
Automatically generating a header with DMD gives me:
=======
size_t frobnicate(int i);
auto frobnicator(T)(T t)
{
static struct Result
{
int index;
size_t front();
enum empty = false;
void popFront();
}
return Result(t.index);
}
=======
Now frobnicator returns a different type for the same T depending
on whether you're using the .d or the .di file. I'm not sure if
this is a problem, but it sounds like something that can come
back to bite you in edge cases.
More information about the Digitalmars-d
mailing list