mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 13:10:12 +03:00
87 lines
1.2 KiB
D
87 lines
1.2 KiB
D
// https://issues.dlang.org/show_bug.cgi?id=23598
|
|
|
|
alias AliasSeq(a...) = a;
|
|
|
|
static if (1)
|
|
{
|
|
|
|
template sort(alias f, a...)
|
|
{
|
|
static if (a.length > 0)
|
|
{
|
|
alias x = f!(a[0]);
|
|
alias sort = a;
|
|
}
|
|
else
|
|
alias sort = a;
|
|
}
|
|
|
|
alias SortedItems = sort!(isDependencyOf, String);
|
|
|
|
enum isDependencyOf(Item) = Item.DirectDependencies.length == 0;
|
|
|
|
struct String
|
|
{
|
|
alias DirectDependencies = AliasSeq!();
|
|
|
|
enum l = SortedItems.length; // (3)
|
|
}
|
|
|
|
}
|
|
|
|
/*****************************************************/
|
|
|
|
static if (1)
|
|
{
|
|
enum x = 1;
|
|
enum y = 2;
|
|
|
|
template f(T)
|
|
{
|
|
alias b = int;
|
|
static if (x)
|
|
{
|
|
alias c = x;
|
|
}
|
|
else
|
|
{
|
|
alias c = y;
|
|
}
|
|
|
|
static if (is(typeof(c)))
|
|
{
|
|
}
|
|
else
|
|
{
|
|
static assert(0);
|
|
}
|
|
}
|
|
|
|
void g()
|
|
{
|
|
int x = f!int.c;
|
|
}
|
|
}
|
|
|
|
/*****************************************************/
|
|
|
|
template forward(args...)
|
|
{
|
|
template fwd(alias arg)
|
|
{
|
|
alias fwd = arg;
|
|
}
|
|
|
|
alias Result = AliasSeq!();
|
|
static foreach (arg; args)
|
|
Result = AliasSeq!(Result, fwd!arg);
|
|
static if (Result.length == 1)
|
|
alias forward = Result[0];
|
|
else
|
|
alias forward = Result;
|
|
}
|
|
|
|
void func(int i, int j)
|
|
{
|
|
func(forward!(i, j));
|
|
}
|