digitalmars.D.learn - A possible enhancement related to is()
- bearophile (19/19) Jan 28 2014 In std.typecons there is this template, that tells if a given
- Jakob Ovrum (16/35) Jan 28 2014 We can already do this, but you have to omit the `Unused` alias
- Andrej Mitrovic (2/5) Jan 29 2014 Me too, but I can't remember if this was filed in bugzilla.
- bearophile (4/10) Jan 29 2014 Thank you.
In std.typecons there is this template, that tells if a given
type is any tuple, this means if it's the instantiation of a
Tuple with any argument type:
template isTuple(T)
{
static if (is(Unqual!T Unused : Tuple!Specs, Specs...))
{
enum isTuple = true;
}
else
{
enum isTuple = false;
}
}
Do you think it's worth a D enhancement request to be able to
write that code like this?
enum isTuple(T) = is(Unqual!T Unused : Tuple!Specs, Specs...);
Bye,
bearophile
Jan 28 2014
On Wednesday, 29 January 2014 at 02:30:00 UTC, bearophile wrote:
In std.typecons there is this template, that tells if a given
type is any tuple, this means if it's the instantiation of a
Tuple with any argument type:
template isTuple(T)
{
static if (is(Unqual!T Unused : Tuple!Specs, Specs...))
{
enum isTuple = true;
}
else
{
enum isTuple = false;
}
}
Do you think it's worth a D enhancement request to be able to
write that code like this?
enum isTuple(T) = is(Unqual!T Unused : Tuple!Specs, Specs...);
Bye,
bearophile
We can already do this, but you have to omit the `Unused` alias
(a semi-recent enhancement allows for that):
---
import std.traits : Unqual;
struct Tuple(Args...) {}
enum isTuple(T) = is(Unqual!T : Tuple!Types, Types...);
void main()
{
Tuple!(int, string) t;
static assert(isTuple!(typeof(t)));
}
---
On a related note, I would like the body of a template to be able
to access aliases introduced in IsExpression's in the template's
constraints.
Jan 28 2014
On 1/29/14, Jakob Ovrum <jakobovrum gmail.com> wrote:On a related note, I would like the body of a template to be able to access aliases introduced in IsExpression's in the template's constraints.Me too, but I can't remember if this was filed in bugzilla.
Jan 29 2014
Jakob Ovrum:
We can already do this, but you have to omit the `Unused` alias
(a semi-recent enhancement allows for that):
---
import std.traits : Unqual;
struct Tuple(Args...) {}
enum isTuple(T) = is(Unqual!T : Tuple!Types, Types...);
Thank you.
Bye,
bearophile
Jan 29 2014









Andrej Mitrovic <andrej.mitrovich gmail.com> 