On 9/14/15 11:30 AM, Ali Çehreli wrote:
On 09/14/2015 08:01 AM, Laeeth Isharc wrote:
 > I was trying to use the same variable eg
 >
 >        auto chain1 = chain("foo", "bar");
 >        chain1 = chain(chain1, "baz");
[...]
 > It may be that the type of chain1
 > and chain2 don't mix.

Exactly.

I was going to recommend using pragma(msg, typeof(chain1)) to see what
they are but it looks like chain()'s return type is not templatized. (?)

     pragma(msg, typeof(chain1));
     pragma(msg, typeof(chain2));

Prints

Result
Result

instead of something like (hypothetical)

ChainResult!(string, string)
ChainResult!(ChainResult!(string, string), string)

Ali

typeid is a bit better:

import std.range;

void main()
{
    import std.stdio;
    auto chain1 = chain("hi", "there");
    auto chain2 = chain(chain1, "friend");
    writeln(typeid(chain1));
    writeln(typeid(chain2));
}

output:

std.range.chain!(string, string).chain.Result
std.range.chain!(Result, string).chain.Result

I still see that "Result" as a parameter for chain2.

I think the compiler should be better at printing these types at compile time.

-Steve

Reply via email to