Tuple/Typedef question

ketmar via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Jan 11 03:52:25 PST 2015


On Sun, 11 Jan 2015 11:41:08 +0000
Martin via Digitalmars-d-learn <digitalmars-d-learn at puremagic.com>
wrote:

> Is there a way to get Tuple (and Typedef) from the std.typecons
> module to generate a new type that is unique on every
> instantiation? What I mean is:
> 
> alias T1 = Tuple!(int, int);
> alias T2 = Tuple!(int, int);
> 
> writeln(__traits(isSame, T1, T2)); // prints true
> 
> When using Typedef, the types are still the same:
> 
> alias T1New = Typedef!(T1);
> alias T2New = Typedef!(T2);
> 
> writeln(__traits(isSame, T1New, T2New)); // still prints true
> 
> The documentation of Typedef says:
> "Typedef allows the creation of a unique type which is based on
> an existing type. Unlike the alias feature, Typedef ensures the
> two types are not considered as equals."
> 
> Shouldn't the second part at least print false then?
as for `Typedef!` -- you can use it's third arg, "cookie":

  import std.typecons;

  alias T1 = Tuple!(int, int);
  alias T2 = Tuple!(int, int);

  alias T1New = Typedef!(T1, T1.init, "t0");
  alias T2New = Typedef!(T2, T2.init, "t1");

  pragma(msg, __traits(isSame, T1New, T2New)); // false

there was a heated discussion about `std.typecons.Typedef`, built-in
`typedef` and other related things, but the decision was to keep the
status quo.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://lists.puremagic.com/pipermail/digitalmars-d-learn/attachments/20150111/fcfa5319/attachment.sig>


More information about the Digitalmars-d-learn mailing list