1 module imports.link15194std;
3 // std.algorithm.setopts
5 /* setUnion template function is instantiated in module link15194 as root,
6 * and linked into executable.
8 * - In "original case", due to link to typeid(const RBRange!(RBNode!int*)),
9 * unSpeculative should be called for the type of typeid operand.
11 * - In "additional case", typeid(const RBRange!(RBNode!int*)*) returns
12 * TypeInfo_Pointer instance. But later its 'next' field access will reference
13 * RBRange instance. Therefore typeid should also unSpeculative the bottom struct
20 TypeInfo setUnion(Rs...)(Rs )
22 return typeid(const Rs[0]*).next;
24 // semanticTypeInfo should also unSpaculate TypePointer.next.
31 struct SetUnion(Rs...)
35 // Rs[0] == RBRange!(RBNode!int*)
38 // size_t toHash() is implicitly generated by buildXtoHash.
40 // typeid(const RBRange!(RBNode!int*))
42 // typeid(const int[])
43 // are referenced to invoke TypeInfo.getHash().
46 SetUnion!(Rs) setUnion(Rs...)(Rs )
48 return typeof(return)();
52 // std.container.rbtree
58 class RedBlackTree(Elem)
60 alias Range = RBRange!(RBNode!Elem*);