Re: problem overloading functions with complex enum type

2017-07-10 Thread Lamex via Digitalmars-d-learn

On Saturday, 8 July 2017 at 15:23:10 UTC, Eric wrote:

import std.stdio;


check check one two


Re: iterate over variadic

2017-07-09 Thread Lamex via Digitalmars-d-learn

On Sunday, 9 July 2017 at 22:21:59 UTC, FoxyBrown wrote:
How can we iterate over a variadic and have it's index. I'll do 
different things depend on if it's an even or odd index, but 
seems to be no way to get it.



import std.stdio;
import std.typecons, std.meta;

template indexedAllSatisfy(alias F, T...)
{
bool doTest()
{
bool result = true;
import std.range: iota;
foreach(i; aliasSeqOf!(iota(0, T.length)))
result &= F!(T[i], i, T.length);
return result;
}
enum indexedAllSatisfy = doTest();
}

unittest
{
template evenIntString(T, int index, int length)
{
static if (length & 1)
enum evenIntString = false;
else static if (index & 1)
enum evenIntString = is(T == string);
else
enum evenIntString = is(T == int);
}

static assert(indexedAllSatisfy!(evenIntString, int, string, 
int, string));
static assert(!indexedAllSatisfy!(evenIntString, int , 
string, char, Object));

}