allow n=0 for std.meta.Repeat

This commit is contained in:
Ilya Yaroshenko 2017-10-18 21:44:09 +07:00 committed by GitHub
parent ca4677117f
commit 2eb41fd1bc

View file

@ -1317,9 +1317,12 @@ private template SmartAlias(T...)
* Creates an `AliasSeq` which repeats a type or an `AliasSeq` exactly `n` times. * Creates an `AliasSeq` which repeats a type or an `AliasSeq` exactly `n` times.
*/ */
template Repeat(size_t n, TList...) template Repeat(size_t n, TList...)
if (n > 0)
{ {
static if (n == 1) static if (n == 0)
{
alias Repeat = AliasSeq!();
}
else static if (n == 1)
{ {
alias Repeat = AliasSeq!TList; alias Repeat = AliasSeq!TList;
} }
@ -1344,6 +1347,9 @@ if (n > 0)
/// ///
@safe unittest @safe unittest
{ {
alias ImInt0 = Repeat!(0, int);
static assert(is(ImInt0 == AliasSeq!()));
alias ImInt1 = Repeat!(1, immutable(int)); alias ImInt1 = Repeat!(1, immutable(int));
static assert(is(ImInt1 == AliasSeq!(immutable(int)))); static assert(is(ImInt1 == AliasSeq!(immutable(int))));