In my project I have sort of complicated logic to implement data
structure that is somehow similar to std.typecons.Tuple. I can't
reproduce it, because I can't locate the source of bug. My code
is like this but have more nested template "calls".
import std.stdio, std.typetuple;
struct MyLib(Args...)
{
alias Symbols = _parseArgs!Args;
template GetNames()
{
alias GetNames = Symbols;
}
}
template _parseArgs(Args...)
{
alias _parseArgs = TypeTuple!Args;
}
void main()
{
auto myLib = MyLib!("a", "b", "c")();
foreach( item; myLib.GetNames!() ) //Error: expression has no
value
writeln(item);
//foreach( item; typeof(myLib).GetNames!() ) //This is working
// writeln(item);
}
Swapping lines that marked as error with commented lines makes it
working. In this example error happens using 2.065 and 2.066, but
in *my project*, where code is similar to this it compiles in
2.065 but fails in 2.066.
So what should be working in this example by language spec?
1. myLib.GetNames!()
2. typeof(myLib).GetNames!()
3. Both of the above
And it's interesting to see any reasons why this happens.