digitalmars.D.bugs - [Issue 3072] New: tuples can't be aliases
- d-bugmail puremagic.com (29/29) Jun 16 2009 http://d.puremagic.com/issues/show_bug.cgi?id=3072
- d-bugmail puremagic.com (39/39) Oct 20 2010 http://d.puremagic.com/issues/show_bug.cgi?id=3072
http://d.puremagic.com/issues/show_bug.cgi?id=3072
Summary: tuples can't be aliases
Product: D
Version: unspecified
Platform: Other
OS/Version: Windows
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody puremagic.com
ReportedBy: shro8822 vandals.uidaho.edu
D1.0
import std.stdio;
template Ta(alias t){void Tfn(){writef(t);}}
template Tt(t...){void Tfn(){writef(t);}}
struct S
{
int i; int j; int k;
mixin Ta!(i); // passes
mixin Tt!(i,j); // fails
}
this causes issues for mixin function that are supposed to work on a subset of
the members of the enclosing type. The string mixin work around is just flat
ugly.
I don't think the spec says this shouldn't work so I'm calling it a bug.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jun 16 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3072
Rob Jacques <sandford jhu.edu> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |accepts-invalid,
| |rejects-valid, spec
CC| |sandford jhu.edu
Version|1.00 |D1 & D2
Summary|tuples can't be aliases |tuples can't be aliases (
| |except when the aliases are
| |templates. )
In general template tuples can't contain alias template parameters but it
appears that there is an exception to this rule when the parameter is itself a
template.
DMD 2.049
T foo(T)(T t) { return t; }
template map1(fun...) {
enum map1 = 42;
}
template map2(T, U...) {
static if(U.length > 0) enum map2 = map2!(U);
else enum map2 = 42;
}
void main() {
auto x = map1!(char,foo); // compiles
auto y = map2!(char,foo); // doesn't compile
auto z = map1!(char,map1); // compiles
auto w = map2!(char,map1); // doesn't compile
return;
}
I've added the accepts-invalid, rejects-valid and spec keywords, since tuples
of aliases should either work or not-work and the behavior should be documented
in the spec. I'd lean towards not-work, since tuples of aliases seem to be
buggy (i.e. Issue 5087) not to mention that alias parameters are buggy(i.e.
issue 5082)
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Oct 20 2010








d-bugmail puremagic.com