mirror of
https://github.com/dlang/phobos.git
synced 2025-04-30 07:00:37 +03:00
Remove typetuple dependencies
This commit is contained in:
parent
67342afbc9
commit
1f82e17a40
1 changed files with 16 additions and 3 deletions
|
@ -34,8 +34,6 @@
|
||||||
*/
|
*/
|
||||||
module std.typetuple;
|
module std.typetuple;
|
||||||
|
|
||||||
import std.traits;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a typetuple out of a sequence of zero or more types.
|
* Creates a typetuple out of a sequence of zero or more types.
|
||||||
*/
|
*/
|
||||||
|
@ -561,12 +559,15 @@ template staticMap(alias F, T...)
|
||||||
///
|
///
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
|
import std.traits : Unqual;
|
||||||
alias TL = staticMap!(Unqual, int, const int, immutable int);
|
alias TL = staticMap!(Unqual, int, const int, immutable int);
|
||||||
static assert(is(TL == TypeTuple!(int, int, int)));
|
static assert(is(TL == TypeTuple!(int, int, int)));
|
||||||
}
|
}
|
||||||
|
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
|
import std.traits : Unqual;
|
||||||
|
|
||||||
// empty
|
// empty
|
||||||
alias staticMap!(Unqual) Empty;
|
alias staticMap!(Unqual) Empty;
|
||||||
static assert(Empty.length == 0);
|
static assert(Empty.length == 0);
|
||||||
|
@ -607,6 +608,8 @@ template allSatisfy(alias F, T...)
|
||||||
///
|
///
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
|
import std.traits : isIntegral;
|
||||||
|
|
||||||
static assert(!allSatisfy!(isIntegral, int, double));
|
static assert(!allSatisfy!(isIntegral, int, double));
|
||||||
static assert( allSatisfy!(isIntegral, int, long));
|
static assert( allSatisfy!(isIntegral, int, long));
|
||||||
}
|
}
|
||||||
|
@ -639,6 +642,8 @@ template anySatisfy(alias F, T...)
|
||||||
///
|
///
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
|
import std.traits : isIntegral;
|
||||||
|
|
||||||
static assert(!anySatisfy!(isIntegral, string, double));
|
static assert(!anySatisfy!(isIntegral, string, double));
|
||||||
static assert( anySatisfy!(isIntegral, int, double));
|
static assert( anySatisfy!(isIntegral, int, double));
|
||||||
}
|
}
|
||||||
|
@ -673,6 +678,8 @@ template Filter(alias pred, TList...)
|
||||||
///
|
///
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
|
import std.traits : isNarrowString, isUnsigned;
|
||||||
|
|
||||||
alias Types1 = TypeTuple!(string, wstring, dchar[], char[], dstring, int);
|
alias Types1 = TypeTuple!(string, wstring, dchar[], char[], dstring, int);
|
||||||
alias TL1 = Filter!(isNarrowString, Types1);
|
alias TL1 = Filter!(isNarrowString, Types1);
|
||||||
static assert(is(TL1 == TypeTuple!(string, wstring, char[])));
|
static assert(is(TL1 == TypeTuple!(string, wstring, char[])));
|
||||||
|
@ -684,6 +691,8 @@ unittest
|
||||||
|
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
|
import std.traits : isPointer;
|
||||||
|
|
||||||
static assert(is(Filter!(isPointer, int, void*, char[], int*) == TypeTuple!(void*, int*)));
|
static assert(is(Filter!(isPointer, int, void*, char[], int*) == TypeTuple!(void*, int*)));
|
||||||
static assert(is(Filter!isPointer == TypeTuple!()));
|
static assert(is(Filter!isPointer == TypeTuple!()));
|
||||||
}
|
}
|
||||||
|
@ -723,7 +732,7 @@ template templateNot(alias pred)
|
||||||
///
|
///
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
import std.traits;
|
import std.traits : isPointer;
|
||||||
|
|
||||||
alias isNoPointer = templateNot!isPointer;
|
alias isNoPointer = templateNot!isPointer;
|
||||||
static assert(!isNoPointer!(int*));
|
static assert(!isNoPointer!(int*));
|
||||||
|
@ -770,6 +779,8 @@ template templateAnd(Preds...)
|
||||||
///
|
///
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
|
import std.traits : isNumeric, isUnsigned;
|
||||||
|
|
||||||
alias storesNegativeNumbers = templateAnd!(isNumeric, templateNot!isUnsigned);
|
alias storesNegativeNumbers = templateAnd!(isNumeric, templateNot!isUnsigned);
|
||||||
static assert(storesNegativeNumbers!int);
|
static assert(storesNegativeNumbers!int);
|
||||||
static assert(!storesNegativeNumbers!string && !storesNegativeNumbers!uint);
|
static assert(!storesNegativeNumbers!string && !storesNegativeNumbers!uint);
|
||||||
|
@ -826,6 +837,8 @@ template templateOr(Preds...)
|
||||||
///
|
///
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
|
import std.traits : isPointer, isUnsigned;
|
||||||
|
|
||||||
alias isPtrOrUnsigned = templateOr!(isPointer, isUnsigned);
|
alias isPtrOrUnsigned = templateOr!(isPointer, isUnsigned);
|
||||||
static assert( isPtrOrUnsigned!uint && isPtrOrUnsigned!(short*));
|
static assert( isPtrOrUnsigned!uint && isPtrOrUnsigned!(short*));
|
||||||
static assert(!isPtrOrUnsigned!int && !isPtrOrUnsigned!(string));
|
static assert(!isPtrOrUnsigned!int && !isPtrOrUnsigned!(string));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue