This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: design doc on alternative pointer support


"Bob Walters" <bob.s.walters@gmail.com> wrote in message 
8C8DB82B-29D9-448C-8261-672FF30D19CC@gmail.com">news:8C8DB82B-29D9-448C-8261-672FF30D19CC@gmail.com...
>
> A copy of the pdf explaining the design of the alternative pointer
> capability is available at:
>
> http://stlshm.sourceforge.net/alt_pointers_in_stl_containers.pdf

Hi,

I am facing the same problem as yours but I am coming from a very different 
path hence I have a different perspective.  Early this week I wrote a patch 
we can find herein attached to this email.  My changes are very similar to 
yours, I am propagating the allocator all the way up to the node but I saw 
some issues we will have if we use a different smart pointer such as mine: 
shifted_ptr or any other as a matter of fact like: shared_ptr.

Firstly I would recommend adding to the allocator a new typedef called 
"iterator" that will define the type used inside container iterators.  This 
will remove unwelcomed overhead for intensive iterator usage.

Secondly some specilized code will need to be added.  In the case of 
conversions between raw pointers and smart pointers this is not a problem 
because we just need adding explicit &* because this cannot be done 
implicitly.  But in the case of _M_erase() and _M_clear() member functions 
we will have problems because smart pointers already handle the deletion of 
their object.  We'll need some sort of specialized functors over there.

Last but not least, _M_impl node cannot be pointed to by smart pointers 
because smart pointers expect objects living on the heap.  This is not 
always the case here because it is a member of the containers and the latter 
will likely be instanciated on the stack.  The easiest solution here is to 
allocate _M_impl on the heap using the allocator, just like all other nodes.


-Phil


begin 666 stl_list.h.patch
M+2TM("]L;V-A;"]I;F-L=61E+V,K*R\S+C0N-2]B:71S+W-T;%]L:7-T+F@)
M5V5D($IA;B Q." Q,3HP-CHU-" R,# V"BLK*R!S=&Q?;&ES="YH"51U92!*
M=6P@,C(@,C,Z-#(Z,30@,C P. I 0" M-3$L,3 @*S4Q+#(Q($! "B @*B!I
M;B!S=7!P;W)T:6YG(&1O8W5M96YT871I;VXN("!3:6QI8V]N($=R87!H:6-S
M(&UA:V5S(&YO"B @*B!R97!R97-E;G1A=&EO;G,@86)O=70@=&AE('-U:71A
M8FEL:71Y(&]F('1H:7,@<V]F='=A<F4@9F]R(&%N>0H@("H@<'5R<&]S92X@
M($ET(&ES('!R;W9I9&5D(")A<R!I<R(@=VET:&]U="!E>'!R97-S(&]R(&EM
M<&QI960@=V%R<F%N='DN"B @*B\*( HK+RHJ#0HK(" @($-O<'ER:6=H=" H
M8RD@,C P."!0:&EL($)O=6-H87)D(#QP:&EL0&9O<FYU>"YC;VT^+@T**PT*
M*R @("!$:7-T<FEB=71E9"!U;F1E<B!T:&4@0F]O<W0@4V]F='=A<F4@3&EC
M96YS92P@5F5R<VEO;B Q+C N#0HK#0HK(" @(%-E92!A8V-O;7!A;GEI;F<@
M9FEL92!,24-%3E-%7S%?,"YT>'0@;W(@8V]P>2!A= T**R @("!H='1P.B\O
M=W=W+F)O;W-T+F]R9R],24-%3E-%7S%?,"YT>'0-"BL-"BL@(" @4V5E(&AT
M=' Z+R]W=W<N8F]O<W0N;W)G+VQI8G,O<VUA<G1?<'1R+V1O8R]I;F1E>"YH
M=&UL(&9O<B!D;V-U;65N=&%T:6]N+@T**RHO#0HK#0H@+RHJ($!F:6QE('-T
M;%]L:7-T+F@*(" J("!4:&ES(&ES(&%N(&EN=&5R;F%L(&AE861E<B!F:6QE
M+"!I;F-L=61E9"!B>2!O=&AE<B!L:6)R87)Y(&AE861E<G,N"B @*B @66]U
M('-H;W5L9"!N;W0@871T96UP="!T;R!U<V4@:70@9&ER96-T;'DN"B @*B\*
M( I 0" M-CDL-C(@*S@P+#<W($! "B @("\O(&QA='1E<B!P=6)L:6-L>2!I
M;FAE<FET<R!F<F]M('1H92!F;W)M97(@:6X@86X@969F;W)T('1O(')E9'5C
M92!C;V1E"B @("\O(&1U<&QI8V%T:6]N+B @5&AI<R!R97-U;'1S(&EN('-O
M;64@(FYE961L97-S(B!S=&%T:6-?8V%S="=I;F<@;&%T97(@;VXL"B @("\O
M(&)U="!I="=S(&%L;"!S869E(&1O=VYC87-T:6YG+@H@"B @("\O+R! :68@
M;6%I;G0@0V]M;6]N('!A<G0@;V8@82!N;V1E(&EN('1H92 E;&ES="X@($!E
M;F1I9@HK("!T96UP;&%T93QT>7!E;F%M92!?06QL;V,^#0H@("!S=')U8W0@
M7TQI<W1?;F]D95]B87-E"B @('L*+2 @("!?3&ES=%]N;V1E7V)A<V4J(%]-
M7VYE>'0[(" @+R\O/"!396QF+65X<&QA;F%T;W)Y"BT@(" @7TQI<W1?;F]D
M95]B87-E*B!?35]P<F5V.R @("\O+SP@4V5L9BUE>'!L86YA=&]R>0HK(" @
M(" @='EP961E9B!T>7!E;F%M92!?06QL;V,Z.G1E;7!L871E(')E8FEN9#Q?
M3&ES=%]N;V1E7V)A<V4\7T%L;&]C/B ^.CIO=&AE<B!?3F]D95]!;&QO8U]T
M>7!E.PT**PT**R @(" @('1Y<&5D968@='EP96YA;64@7TYO9&5?06QL;V-?
M='EP93HZ<&]I;G1E<B @(" @(" @(" @(" @(" @("!P;VEN=&5R.PT**R @
M(" @('1Y<&5D968@='EP96YA;64@7TYO9&5?06QL;V-?='EP93HZ8V]N<W1?
M<&]I;G1E<B @(" @(" @(" @("!C;VYS=%]P;VEN=&5R.PT**R @(" @('1Y
M<&5D968@='EP96YA;64@7TYO9&5?06QL;V-?='EP93HZ<F5F97)E;F-E(" @
M(" @(" @(" @(" @("!R969E<F5N8V4[#0HK(" @(" @='EP961E9B!T>7!E
M;F%M92!?3F]D95]!;&QO8U]T>7!E.CIC;VYS=%]R969E<F5N8V4@(" @(" @
M(" @(&-O;G-T7W)E9F5R96YC93L-"BL-"BL@(" @("!P;VEN=&5R(%]-7VYE
M>'0[(" @+R\O/"!396QF+65X<&QA;F%T;W)Y#0HK(" @(" @<&]I;G1E<B!?
M35]P<F5V.R @("\O+SP@4V5L9BUE>'!L86YA=&]R>0T*( H@(" @('-T871I
M8R!V;VED"B @(" @<W=A<"A?3&ES=%]N;V1E7V)A<V4F(%]?>"P@7TQI<W1?
M;F]D95]B87-E)B!?7WDI.PH@"B @(" @=F]I9 HM(" @('1R86YS9F5R*%],
M:7-T7VYO9&5?8F%S92 J(&-O;G-T(%]?9FER<W0L"BT)(" @("!?3&ES=%]N
M;V1E7V)A<V4@*B!C;VYS="!?7VQA<W0I.PHK(" @(" @=')A;G-F97(H<&]I
M;G1E<B!C;VYS=" F(%]?9FER<W0L#0HK"2 @(" @("!P;VEN=&5R(&-O;G-T
M("8@7U]L87-T*3L-"B *(" @("!V;VED"B @(" @<F5V97)S92@I.PH@"B @
M(" @=F]I9 HM(" @(&AO;VLH7TQI<W1?;F]D95]B87-E("H@8V]N<W0@7U]P
M;W-I=&EO;BD["BL@(" @("!H;V]K*'!O:6YT97(@8V]N<W0@)B!?7W!O<VET
M:6]N*3L-"B *(" @("!V;VED"B @(" @=6YH;V]K*"D["B @('T["B *(" @
M+R\O($!I9B!M86EN="!!;B!A8W1U86P@;F]D92!I;B!T:&4@)6QI<W0N("! 
M96YD:68*+2 @=&5M<&QA=&4\='EP96YA;64@7U1P/@HM(" @('-T<G5C="!?
M3&ES=%]N;V1E(#H@<'5B;&EC(%],:7-T7VYO9&5?8F%S90HK("!T96UP;&%T
M93QT>7!E;F%M92!?5' L('1Y<&5N86UE(%]!;&QO8SX-"BL@(" @<W1R=6-T
M(%],:7-T7VYO9&4@.B!P=6)L:6,@7TQI<W1?;F]D95]B87-E/%]!;&QO8SX-
M"B @(" @>PHK(" @(" @='EP961E9B!T>7!E;F%M92!?06QL;V,Z.G1E;7!L
M871E(')E8FEN9#Q?3&ES=%]N;V1E/%]4<"P@7T%L;&]C/B ^.CIO=&AE<B!?
M3F]D95]!;&QO8U]T>7!E.PT**PT**R @(" @('1Y<&5D968@='EP96YA;64@
M7TYO9&5?06QL;V-?='EP93HZ<&]I;G1E<B @(" @(" @(" @(" @(" @("!P
M;VEN=&5R.PT**R @(" @('1Y<&5D968@='EP96YA;64@7TYO9&5?06QL;V-?
M='EP93HZ8V]N<W1?<&]I;G1E<B @(" @(" @(" @("!C;VYS=%]P;VEN=&5R
M.PT**R @(" @('1Y<&5D968@='EP96YA;64@7TYO9&5?06QL;V-?='EP93HZ
M<F5F97)E;F-E(" @(" @(" @(" @(" @("!R969E<F5N8V4[#0HK(" @(" @
M='EP961E9B!T>7!E;F%M92!?3F]D95]!;&QO8U]T>7!E.CIC;VYS=%]R969E
M<F5N8V4@(" @(" @(" @(&-O;G-T7W)E9F5R96YC93L-"BL-"B @(" @("!?
M5' @7TU?9&%T83L@(" @(" @(" @(" @(" @+R\O/"!5<V5R)W,@9&%T82X*
M(" @("!].PH@"B @("\J*@H@(" @*B @0&)R:65F($$@;&ES=#HZ:71E<F%T
M;W(N"B @(" J"B @(" J("! :68@;6%I;G0*(" @("H@($%L;"!T:&4@9G5N
M8W1I;VYS(&%R92!O<"!O=F5R;&]A9',N"B @(" J("! 96YD:68*(" @*B\*
M+2 @=&5M<&QA=&4\='EP96YA;64@7U1P/@HK("!T96UP;&%T93QT>7!E;F%M
M92!?5' L('1Y<&5N86UE(%]!;&QO8SX-"B @(" @<W1R=6-T(%],:7-T7VET
M97)A=&]R"B @(" @>PHM(" @(" @='EP961E9B!?3&ES=%]I=&5R871O<CQ?
M5' ^(" @(" @(" @("!?4V5L9CL*+2 @(" @('1Y<&5D968@7TQI<W1?;F]D
M93Q?5' ^(" @(" @(" @(" @(" @7TYO9&4["BL@(" @("!T>7!E9&5F(%],
M:7-T7VET97)A=&]R/%]4<"P@7T%L;&]C/B @(%]396QF.PT**R @(" @('1Y
M<&5D968@7TQI<W1?;F]D93Q?5' L(%]!;&QO8SX@(" @(" @7TYO9&4[#0H@
M"B @(" @("!T>7!E9&5F('!T<F1I9F9?=" @(" @(" @(" @(" @(" @(" @
M(&1I9F9E<F5N8V5?='EP93L*(" @(" @('1Y<&5D968@8FED:7)E8W1I;VYA
M;%]I=&5R871O<E]T86<@(" @:71E<F%T;W)?8V%T96=O<GD["B @(" @("!T
M>7!E9&5F(%]4<" @(" @(" @(" @(" @(" @(" @(" @(" @('9A;'5E7W1Y
M<&4["B @(" @("!T>7!E9&5F(%]4<"H@(" @(" @(" @(" @(" @(" @(" @
M(" @('!O:6YT97(["B @(" @("!T>7!E9&5F(%]4<"8@(" @(" @(" @(" @
M(" @(" @(" @(" @(')E9F5R96YC93L*( H@(" @(" @7TQI<W1?:71E<F%T
M;W(H*0H@(" @(" @.B!?35]N;V1E*"D@>R!]"B *+2 @(" @(%],:7-T7VET
M97)A=&]R*%],:7-T7VYO9&5?8F%S92H@7U]X*0HK(" @(" @7TQI<W1?:71E
M<F%T;W(H7TQI<W1?;F]D95]B87-E/%]!;&QO8SXJ(%]?>"D-"B @(" @(" Z
M(%]-7VYO9&4H7U]X*2![('T*( H@(" @(" @+R\@375S="!D;W=N8V%S="!F
M<F]M($QI<W1?;F]D95]B87-E('1O(%],:7-T7VYO9&4@=&\@9V5T('1O(%]-
M7V1A=&$N"B @(" @("!R969E<F5N8V4*(" @(" @(&]P97)A=&]R*B@I(&-O
M;G-T"D! ("TQ-S$L,S<@*S$Y-RPS-R! 0 H@(" @(" @8F]O; H@(" @(" @
M;W!E<F%T;W(A/2AC;VYS="!?4V5L9B8@7U]X*2!C;VYS= H@(" @(" @>R!R
M971U<FX@7TU?;F]D92 A/2!?7W@N7TU?;F]D93L@?0H@"B @(" @(" O+R!4
M:&4@;VYL>2!M96UB97(@<&]I;G1S('1O('1H92 E;&ES="!E;&5M96YT+@HM
M(" @(" @7TQI<W1?;F]D95]B87-E*B!?35]N;V1E.PHK(" @(" @7TQI<W1?
M;F]D95]B87-E/%]!;&QO8SXJ(%]-7VYO9&4[#0H@(" @('T["B *(" @+RHJ
M"B @(" J("! 8G)I968@02!L:7-T.CIC;VYS=%]I=&5R871O<BX*(" @("H*
M(" @("H@($!I9B!M86EN= H@(" @*B @06QL('1H92!F=6YC=&EO;G,@87)E
M(&]P(&]V97)L;V%D<RX*(" @("H@($!E;F1I9@H@(" J+PHM("!T96UP;&%T
M93QT>7!E;F%M92!?5' ^"BL@('1E;7!L871E/'1Y<&5N86UE(%]4<"P@='EP
M96YA;64@7T%L;&]C/@T*(" @("!S=')U8W0@7TQI<W1?8V]N<W1?:71E<F%T
M;W(*(" @("!["BT@(" @("!T>7!E9&5F(%],:7-T7V-O;G-T7VET97)A=&]R
M/%]4<#X@(" @(%]396QF.PHM(" @(" @='EP961E9B!C;VYS="!?3&ES=%]N
M;V1E/%]4<#X@(" @(" @("!?3F]D93L*+2 @(" @('1Y<&5D968@7TQI<W1?
M:71E<F%T;W(\7U1P/B @(" @(" @(" @:71E<F%T;W(["BL@(" @("!T>7!E
M9&5F(%],:7-T7V-O;G-T7VET97)A=&]R/%]4<"P@7T%L;&]C/B!?4V5L9CL-
M"BL@(" @("!T>7!E9&5F(&-O;G-T(%],:7-T7VYO9&4\7U1P+"!?06QL;V,^
M(" @("!?3F]D93L-"BL@(" @("!T>7!E9&5F(%],:7-T7VET97)A=&]R/%]4
M<"P@7T%L;&]C/B @(" @("!I=&5R871O<CL-"B *(" @(" @('1Y<&5D968@
M<'1R9&EF9E]T(" @(" @(" @(" @(" @(" @(" @9&EF9F5R96YC95]T>7!E
M.PH@(" @(" @='EP961E9B!B:61I<F5C=&EO;F%L7VET97)A=&]R7W1A9R @
M("!I=&5R871O<E]C871E9V]R>3L*(" @(" @('1Y<&5D968@7U1P(" @(" @
M(" @(" @(" @(" @(" @(" @(" @=F%L=65?='EP93L*(" @(" @('1Y<&5D
M968@8V]N<W0@7U1P*B @(" @(" @(" @(" @(" @(" @<&]I;G1E<CL*(" @
M(" @('1Y<&5D968@8V]N<W0@7U1P)B @(" @(" @(" @(" @(" @(" @<F5F
M97)E;F-E.PH@"B @(" @("!?3&ES=%]C;VYS=%]I=&5R871O<B@I"B @(" @
M(" Z(%]-7VYO9&4H*2![('T*( HM(" @(" @7TQI<W1?8V]N<W1?:71E<F%T
M;W(H8V]N<W0@7TQI<W1?;F]D95]B87-E*B!?7W@I"BL@(" @("!?3&ES=%]C
M;VYS=%]I=&5R871O<BAC;VYS="!?3&ES=%]N;V1E7V)A<V4\7T%L;&]C/BH@
M7U]X*0T*(" @(" @(#H@7TU?;F]D92A?7W@I('L@?0H@"B @(" @("!?3&ES
M=%]C;VYS=%]I=&5R871O<BAC;VYS="!I=&5R871O<B8@7U]X*0H@(" @(" @
M.B!?35]N;V1E*%]?>"Y?35]N;V1E*2![('T*( I 0" M,C$V+#$Q("LR-#(L
M,3$@0$ *(" @(" @('L@<F5T=7)N("9S=&%T:6-?8V%S=#Q?3F]D92H^*%]-
M7VYO9&4I+3Y?35]D871A.R!]"B *(" @(" @(%]396QF)@H@(" @(" @;W!E
M<F%T;W(K*R@I"B @(" @("!["BT)7TU?;F]D92 ](%]-7VYO9&4M/E]-7VYE
M>'0["BL@(" @(" @(%]-7VYO9&4@/2 F*E]-7VYO9&4M/E]-7VYE>'0[#0H@
M"7)E='5R;B J=&AI<SL*(" @(" @('T*( H@(" @(" @7U-E;&8*(" @(" @
M(&]P97)A=&]R*RLH:6YT*0I 0" M,C4R+#(S("LR-S@L,C,@0$ *(" @(" @
M(&)O;VP*(" @(" @(&]P97)A=&]R(3TH8V]N<W0@7U-E;&8F(%]?>"D@8V]N
M<W0*(" @(" @('L@<F5T=7)N(%]-7VYO9&4@(3T@7U]X+E]-7VYO9&4[('T*
M( H@(" @(" @+R\@5&AE(&]N;'D@;65M8F5R('!O:6YT<R!T;R!T:&4@)6QI
M<W0@96QE;65N="X*+2 @(" @(&-O;G-T(%],:7-T7VYO9&5?8F%S92H@7TU?
M;F]D93L**R @(" @(&-O;G-T(%],:7-T7VYO9&5?8F%S93Q?06QL;V,^*B!?
M35]N;V1E.PT*(" @("!].PH@"BT@('1E;7!L871E/'1Y<&5N86UE(%]686P^
M"BL@('1E;7!L871E/'1Y<&5N86UE(%]686PL('1Y<&5N86UE(%]!;&QO8SX-
M"B @(" @:6YL:6YE(&)O;VP*+2 @("!O<&5R871O<CT]*&-O;G-T(%],:7-T
M7VET97)A=&]R/%]686P^)B!?7W@L"BT)(" @(" @(&-O;G-T(%],:7-T7V-O
M;G-T7VET97)A=&]R/%]686P^)B!?7WDI"BL@(" @;W!E<F%T;W(]/2AC;VYS
M="!?3&ES=%]I=&5R871O<CQ?5F%L+"!?06QL;V,^)B!?7W@L#0HK"2 @(" @
M("!C;VYS="!?3&ES=%]C;VYS=%]I=&5R871O<CQ?5F%L+"!?06QL;V,^)B!?
M7WDI#0H@(" @('L@<F5T=7)N(%]?>"Y?35]N;V1E(#T](%]?>2Y?35]N;V1E
M.R!]"B *+2 @=&5M<&QA=&4\='EP96YA;64@7U9A;#X**R @=&5M<&QA=&4\
M='EP96YA;64@7U9A;"P@='EP96YA;64@7T%L;&]C/@T*(" @("!I;FQI;F4@
M8F]O; HM(" @(&]P97)A=&]R(3TH8V]N<W0@7TQI<W1?:71E<F%T;W(\7U9A
M;#XF(%]?>"P*+2 @(" @(" @(" @(" @(&-O;G-T(%],:7-T7V-O;G-T7VET
M97)A=&]R/%]686P^)B!?7WDI"BL@(" @;W!E<F%T;W(A/2AC;VYS="!?3&ES
M=%]I=&5R871O<CQ?5F%L+"!?06QL;V,^)B!?7W@L#0HK(" @(" @(" @(" @
M(" @8V]N<W0@7TQI<W1?8V]N<W1?:71E<F%T;W(\7U9A;"P@7T%L;&]C/B8@
M7U]Y*0T*(" @("![(')E='5R;B!?7W@N7TU?;F]D92 A/2!?7WDN7TU?;F]D
M93L@?0H@"B *(" @+RHJ"B @(" J("! :68@;6%I;G0*0$ @+3(Y,"PS-" K
M,S$V+#,T($! "B @(" @(" O+PH@(" @(" @+R\@5V4@<'5T('1H:7,@=&\@
M=&AE('1E<W0@:6X@=&AE(&-O;G-T<G5C=&]R<R!A;F0@:6X*(" @(" @("\O
M(&=E=%]A;&QO8V%T;W(L('=H97)E('=E('5S92!C;VYV97)S:6]N<R!B971W
M965N"B @(" @(" O+R!A;&QO8V%T;W)?='EP92!A;F0@7TYO9&5?06QL;V-?
M='EP92X@5&AE(&-O;G9E<G-I;VX@:7,*(" @(" @("\O(')E<75I<F5D(&)Y
M('1A8FQE(#,R(&EN(%LR,"XQ+C5=+@HM(" @(" @='EP961E9B!T>7!E;F%M
M92!?06QL;V,Z.G1E;7!L871E(')E8FEN9#Q?3&ES=%]N;V1E/%]4<#X@/CHZ
M;W1H97(**R @(" @('1Y<&5D968@='EP96YA;64@7T%L;&]C.CIT96UP;&%T
M92!R96)I;F0\7TQI<W1?;F]D93Q?5' L(%]!;&QO8SX@/CHZ;W1H97(@#0H@
M"B @(" @("!?3F]D95]!;&QO8U]T>7!E.PH@"B @(" @("!S=')U8W0@7TQI
M<W1?:6UP;" *( DZ('!U8FQI8R!?3F]D95]!;&QO8U]T>7!E('L*+0E?3&ES
M=%]N;V1E7V)A<V4@7TU?;F]D93L**PE?3&ES=%]N;V1E7V)A<V4\7T%L;&]C
M/B!?35]N;V1E.PT*( E?3&ES=%]I;7!L("AC;VYS="!?3F]D95]!;&QO8U]T
M>7!E)B!?7V$I"B )(" Z(%].;V1E7T%L;&]C7W1Y<&4H7U]A*0H@"7L@?0H@
M(" @(" @?3L*( H@(" @(" @7TQI<W1?:6UP;"!?35]I;7!L.PH@"BT@(" @
M("!?3&ES=%]N;V1E/%]4<#XJ"BL@(" @("!?3&ES=%]N;V1E/%]4<"P@7T%L
M;&]C/B J#0H@(" @(" @7TU?9V5T7VYO9&4H*0H@(" @(" @>R!R971U<FX@
M7TU?:6UP;"Y?3F]D95]!;&QO8U]T>7!E.CIA;&QO8V%T92@Q*3L@?0H@(" @
M(" @"B @(" @("!V;VED"BT@(" @("!?35]P=71?;F]D92A?3&ES=%]N;V1E
M/%]4<#XJ(%]?<"D**R @(" @(%]-7W!U=%]N;V1E*%],:7-T7VYO9&4\7U1P
M+"!?06QL;V,^("H@7U]P*0T*(" @(" @('L@7TU?:6UP;"Y?3F]D95]!;&QO
M8U]T>7!E.CID96%L;&]C871E*%]?<"P@,2D[('T*(" @(" @( H@("!P=6)L
M:6,Z"BT@(" @("!T>7!E9&5F(%]!;&QO8R!A;&QO8V%T;W)?='EP93L**R @
M(" @('1Y<&5D968@7TYO9&5?06QL;V-?='EP92!A;&QO8V%T;W)?='EP93L-
M"B *(" @(" @(&%L;&]C871O<E]T>7!E"B @(" @("!G971?86QL;V-A=&]R
M*"D@8V]N<W0*(" @(" @('L@<F5T=7)N(&%L;&]C871O<E]T>7!E*"IS=&%T
M:6-?8V%S=#QC;VYS="!?3F]D95]!;&QO8U]T>7!E*CXH)G1H:7,M/E]-7VEM
M<&PI*3L@?0H@"D! ("TS.3,L,C8@*S0Q.2PR-B! 0 H@"B @(" @("!T>7!E
M9&5F(%],:7-T7V)A<V4\7U1P+"!?06QL;V,^(" @(" @(" @(" @(" @(" @
M(%]"87-E.PH@"B @(" @<'5B;&EC.@H@(" @(" @='EP961E9B!?5' @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @=F%L=65?='EP
M93L*+2 @(" @('1Y<&5D968@='EP96YA;64@7T%L;&]C.CIP;VEN=&5R(" @
M(" @(" @(" @(" @(" @('!O:6YT97(["BT@(" @("!T>7!E9&5F('1Y<&5N
M86UE(%]!;&QO8SHZ8V]N<W1?<&]I;G1E<B @(" @(" @(" @("!C;VYS=%]P
M;VEN=&5R.PHM(" @(" @='EP961E9B!T>7!E;F%M92!?06QL;V,Z.G)E9F5R
M96YC92 @(" @(" @(" @(" @(" @<F5F97)E;F-E.PHM(" @(" @='EP961E
M9B!T>7!E;F%M92!?06QL;V,Z.F-O;G-T7W)E9F5R96YC92 @(" @(" @(" @
M8V]N<W1?<F5F97)E;F-E.PHM(" @(" @='EP961E9B!?3&ES=%]I=&5R871O
M<CQ?5' ^(" @(" @(" @(" @(" @(" @(" @(" @:71E<F%T;W(["BT@(" @
M("!T>7!E9&5F(%],:7-T7V-O;G-T7VET97)A=&]R/%]4<#X@(" @(" @(" @
M(" @(" @("!C;VYS=%]I=&5R871O<CL**R @(" @('1Y<&5D968@='EP96YA
M;64@7TQI<W1?;F]D93Q?5' L(%]!;&QO8SXZ.G!O:6YT97(@(" @(" @("!P
M;VEN=&5R.PT**R @(" @('1Y<&5D968@='EP96YA;64@7TQI<W1?;F]D93Q?
M5' L(%]!;&QO8SXZ.F-O;G-T7W!O:6YT97(@("!C;VYS=%]P;VEN=&5R.PT*
M*R @(" @('1Y<&5D968@='EP96YA;64@7TQI<W1?;F]D93Q?5' L(%]!;&QO
M8SXZ.G)E9F5R96YC92 @(" @("!R969E<F5N8V4[#0HK(" @(" @='EP961E
M9B!T>7!E;F%M92!?3&ES=%]N;V1E/%]4<"P@7T%L;&]C/CHZ8V]N<W1?<F5F
M97)E;F-E(&-O;G-T7W)E9F5R96YC93L-"BL@(" @("!T>7!E9&5F(%],:7-T
M7VET97)A=&]R/%]4<"P@7T%L;&]C/B @(" @(" @(" @(" @(" @(" @(" @
M:71E<F%T;W([#0HK(" @(" @='EP961E9B!?3&ES=%]C;VYS=%]I=&5R871O
M<CQ?5' L(%]!;&QO8SX@(" @(" @(" @(" @(" @(&-O;G-T7VET97)A=&]R
M.PT*(" @(" @('1Y<&5D968@<W1D.CIR979E<G-E7VET97)A=&]R/&-O;G-T
M7VET97)A=&]R/B @(" @(&-O;G-T7W)E=F5R<V5?:71E<F%T;W(["B @(" @
M("!T>7!E9&5F('-T9#HZ<F5V97)S95]I=&5R871O<CQI=&5R871O<CX@(" @
M(" @(" @("!R979E<G-E7VET97)A=&]R.PH@(" @(" @='EP961E9B!S:7IE
M7W0@(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @<VEZ95]T
M>7!E.PH@(" @(" @='EP961E9B!P=')D:69F7W0@(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @9&EF9F5R96YC95]T>7!E.PH@(" @(" @='EP
M961E9B!T>7!E;F%M92!?0F%S93HZ86QL;V-A=&]R7W1Y<&4@(" @(" @(" @
M(" @86QL;V-A=&]R7W1Y<&4["B *(" @("!P<F]T96-T960Z"B @(" @(" O
M+R!.;W1E('1H870@<&]I;G1E<G,M=&\M7TYO9&4G<R!C86X@8F4@8W1O<BUC
M;VYV97)T960@=&\*(" @(" @("\O(&ET97)A=&]R('1Y<&5S+@HM(" @(" @
M='EP961E9B!?3&ES=%]N;V1E/%]4<#X)"0D)7TYO9&4["BL@(" @("!T>7!E
M9&5F(%],:7-T7VYO9&4\7U1P+"!?06QL;V,^(" @(" @(" @(" @(" @(" @
M(" @(" @(" @7TYO9&4[#0H@"B @(" @(" O*BH@0&EF(&UA:6YT"B @(" @
M(" @*B @3VYE(&1A=&$@;65M8F5R('!L=7,@='=O(&UE;6]R>2UH86YD;&EN
M9R!F=6YC=&EO;G,N("!)9B!T:&4*(" @(" @(" J("!?06QL;V,@='EP92!R
M97%U:7)E<R!S97!A<F%T92!I;G-T86YC97,L('1H96X@;VYE(&]F('1H;W-E
M"B @(" @(" @*B @=VEL;"!A;'-O(&)E(&EN8VQU9&5D+"!A8V-U;75L871E
M9"!F<F]M('1H92!T;W!M;W-T('!A<F5N="X*0$ @+34Y-2PR," K-C(Q+#(P
M($! "B @(" @(" @*B @4F5T=7)N<R!A(')E860O=W)I=&4@:71E<F%T;W(@
M=&AA="!P;VEN=',@=&\@=&AE(&9I<G-T(&5L96UE;G0@:6X@=&AE"B @(" @
M(" @*B @)6QI<W0N("!)=&5R871I;VX@:7,@9&]N92!I;B!O<F1I;F%R>2!E
M;&5M96YT(&]R9&5R+@H@(" @(" @("HO"B @(" @("!I=&5R871O<@H@(" @
M(" @8F5G:6XH*0HM(" @(" @>R!R971U<FX@=&AI<RT^7TU?:6UP;"Y?35]N
M;V1E+E]-7VYE>'0[('T**R @(" @('L@<F5T=7)N(&ET97)A=&]R*"8J=&AI
M<RT^7TU?:6UP;"Y?35]N;V1E+E]-7VYE>'0I.R!]#0H@"B @(" @(" O*BH*
M(" @(" @(" J("!2971U<FYS(&$@<F5A9"UO;FQY("AC;VYS=&%N="D@:71E
M<F%T;W(@=&AA="!P;VEN=',@=&\@=&AE"B @(" @(" @*B @9FER<W0@96QE
M;65N="!I;B!T:&4@)6QI<W0N("!)=&5R871I;VX@:7,@9&]N92!I;B!O<F1I
M;F%R>0H@(" @(" @("H@(&5L96UE;G0@;W)D97(N"B @(" @(" @*B\*(" @
M(" @(&-O;G-T7VET97)A=&]R"B @(" @("!B96=I;B@I(&-O;G-T"BT@(" @
M("![(')E='5R;B!T:&ES+3Y?35]I;7!L+E]-7VYO9&4N7TU?;F5X=#L@?0HK
M(" @(" @>R!R971U<FX@8V]N<W1?:71E<F%T;W(H)BIT:&ES+3Y?35]I;7!L
M+E]-7VYO9&4N7TU?;F5X="D[('T-"B *(" @(" @("\J*@H@(" @(" @("H@
M(%)E='5R;G,@82!R96%D+W=R:71E(&ET97)A=&]R('1H870@<&]I;G1S(&]N
M92!P87-T('1H92!L87-T"B @(" @(" @*B @96QE;65N="!I;B!T:&4@)6QI
M<W0N("!)=&5R871I;VX@:7,@9&]N92!I;B!O<F1I;F%R>2!E;&5M96YT"B @
M(" @(" @*B @;W)D97(N"D! ("TY,#@L,3$@*SDS-"PQ,2! 0 H@(" @(" @
M("H@('-P96-I86QI>F5D('-U8V@@=&AA="!S=&0Z.G-W87 H;#$L;#(I('=I
M;&P@9F5E9"!T;R!T:&ES"B @(" @(" @*B @9G5N8W1I;VXN"B @(" @(" @
M*B\*(" @(" @('9O:60*(" @(" @('-W87 H;&ES="8@7U]X*0HM(" @(" @
M>R!?3&ES=%]N;V1E7V)A<V4Z.G-W87 H=&AI<RT^7TU?:6UP;"Y?35]N;V1E
M+%]?>"Y?35]I;7!L+E]-7VYO9&4I.R!]"BL@(" @("![(%],:7-T7VYO9&5?
M8F%S93Q?06QL;V,^.CIS=V%P*'1H:7,M/E]-7VEM<&PN7TU?;F]D92Q?7W@N
M7TU?:6UP;"Y?35]N;V1E*3L@?0T*( H@(" @(" @+RHJ"B @(" @(" @*B @
M17)A<V5S(&%L;"!T:&4@96QE;65N=',N("!.;W1E('1H870@=&AI<R!F=6YC
M=&EO;B!O;FQY(&5R87-E<PH@(" @(" @("H@('1H92!E;&5M96YT<RP@86YD
M('1H870@:68@=&AE(&5L96UE;G1S('1H96US96QV97,@87)E"B @(" @(" @
M*B @<&]I;G1E<G,L('1H92!P;VEN=&5D+71O(&UE;6]R>2!I<R!N;W0@=&]U
M8VAE9"!I;B!A;GD@=V%Y+@I 0" M,3$V-RPQ,R K,3$Y,RPQ-R! 0 H@(" @
M(" @+R\@17)A<V5S(&5L96UE;G0@870@<&]S:71I;VX@9VEV96XN"B @(" @
M("!V;VED"B @(" @("!?35]E<F%S92AI=&5R871O<B!?7W!O<VET:6]N*0H@
M(" @(" @>PH@(" @(" @("!?7W!O<VET:6]N+E]-7VYO9&4M/G5N:&]O:R@I
M.PHK+RHJ#0HK(" @($9)6$U%.B!D:7-T:6YG=6ES:"!W:71H(')A=R!P;VEN
M=&5R<PT**PT*(" @(" @(" @7TYO9&4J(%]?;B ]('-T871I8U]C87-T/%].
M;V1E*CXH7U]P;W-I=&EO;BY?35]N;V1E*3L*(" @(" @(" @<W1D.CI?1&5S
M=')O>2@F7U]N+3Y?35]D871A*3L*(" @(" @(" @7TU?<'5T7VYO9&4H7U]N
M*3L**RHO#0H@(" @(" @?0H@(" @('T["B *(" @+RHJ"B @(" J("! 8G)I
>968@($QI<W0@97%U86QI='D@8V]M<&%R:7-O;BX*
`
end

begin 666 list.tcc.patch
M+2TM("]L;V-A;"]I;F-L=61E+V,K*R\S+C0N-2]B:71S+VQI<W0N=&-C"5=E
M9"!*86X@,3@@,3$Z,#8Z-#8@,C P-@HK*RL@;&ES="YT8V,)5'5E($IU;" R
M,B R,SHT,3HR,R R,# X"D! ("TU,2PT,B K-3$L-S0@0$ *(" J(&EN('-U
M<'!O<G1I;F<@9&]C=6UE;G1A=&EO;BX@(%-I;&EC;VX@1W)A<&AI8W,@;6%K
M97,@;F\*(" J(')E<')E<V5N=&%T:6]N<R!A8F]U="!T:&4@<W5I=&%B:6QI
M='D@;V8@=&AI<R!S;V9T=V%R92!F;W(@86YY"B @*B!P=7)P;W-E+B @270@
M:7,@<')O=FED960@(F%S(&ES(B!W:71H;W5T(&5X<')E<W,@;W(@:6UP;&EE
M9"!W87)R86YT>2X*(" J+PH@"BLO*BH-"BL@(" @0V]P>7)I9VAT("AC*2 R
M,# X(%!H:6P@0F]U8VAA<F0@/'!H:6Q 9F]R;G5X+F-O;3XN#0HK#0HK(" @
M($1I<W1R:6)U=&5D('5N9&5R('1H92!";V]S="!3;V9T=V%R92!,:6-E;G-E
M+"!697)S:6]N(#$N,"X-"BL-"BL@(" @4V5E(&%C8V]M<&%N>6EN9R!F:6QE
M($Q)0T5.4T5?,5\P+G1X="!O<B!C;W!Y(&%T#0HK(" @(&AT=' Z+R]W=W<N
M8F]O<W0N;W)G+TQ)0T5.4T5?,5\P+G1X= T**PT**R @("!3964@:'1T<#HO
M+W=W=RYB;V]S="YO<F<O;&EB<R]S;6%R=%]P='(O9&]C+VEN9&5X+FAT;6P@
M9F]R(&1O8W5M96YT871I;VXN#0HK*B\-"BL-"B O*BH@0&9I;&4@;&ES="YT
M8V,*(" J("!4:&ES(&ES(&%N(&EN=&5R;F%L(&AE861E<B!F:6QE+"!I;F-L
M=61E9"!B>2!O=&AE<B!L:6)R87)Y(&AE861E<G,N"B @*B @66]U('-H;W5L
M9"!N;W0@871T96UP="!T;R!U<V4@:70@9&ER96-T;'DN"B @*B\*( H@(VEF
M;F1E9B!?3$E35%]40T,*("-D969I;F4@7TQ)4U1?5$-#(#$*( H@;F%M97-P
M86-E(%]'3$E"0UA87U-41 H@>PHK("!T96UP;&%T93QT>7!E;F%M92!?06QL
M;V,^#0HK(" @('9O:60-"BL@(" @7TQI<W1?;F]D95]B87-E/%]!;&QO8SXZ
M.FAO;VLH<&]I;G1E<B!C;VYS=" F(%]?<&]S:71I;VXI#0HK(" @('L-"BL@
M(" @(" @('1H:7,M/E]-7VYE>'0@/2!?7W!O<VET:6]N.PT**R @(" @(" @
M=&AI<RT^7TU?<')E=B ](%]?<&]S:71I;VXM/E]-7W!R978[#0HK(" @(" @
M("!?7W!O<VET:6]N+3Y?35]P<F5V+3Y?35]N97AT(#T@=&AI<SL-"BL@(" @
M(" @(%]?<&]S:71I;VXM/E]-7W!R978@/2!T:&ES.PT**R @("!]#0HK#0HK
M("!T96UP;&%T93QT>7!E;F%M92!?06QL;V,^#0HK(" @('9O:60-"BL@(" @
M7TQI<W1?;F]D95]B87-E/%]!;&QO8SXZ.G5N:&]O:R@I#0HK(" @('L-"BL@
M(" @(" @('!O:6YT97(@8V]N<W0@7U]N97AT7VYO9&4@/2!T:&ES+3Y?35]N
M97AT.PT**R @(" @(" @<&]I;G1E<B!C;VYS="!?7W!R979?;F]D92 ]('1H
M:7,M/E]-7W!R978[#0HK(" @(" @("!?7W!R979?;F]D92T^7TU?;F5X=" ]
M(%]?;F5X=%]N;V1E.PT**R @(" @(" @7U]N97AT7VYO9&4M/E]-7W!R978@
M/2!?7W!R979?;F]D93L-"BL@(" @?0T**PT*(" @=&5M<&QA=&4\='EP96YA
M;64@7U1P+"!T>7!E;F%M92!?06QL;V,^"B @(" @=F]I9 H@(" @(%],:7-T
M7V)A<V4\7U1P+%]!;&QO8SXZ.@H@(" @(%]-7V-L96%R*"D*(" @("!["BT@
M(" @("!T>7!E9&5F(%],:7-T7VYO9&4\7U1P/B @7TYO9&4["BT@(" @("!?
M3F]D92H@7U]C=7(@/2!S=&%T:6-?8V%S=#Q?3F]D92H^*'1H:7,M/E]-7VEM
M<&PN7TU?;F]D92Y?35]N97AT*3L**R @(" @('1Y<&5D968@7TQI<W1?;F]D
M93Q?5' L7T%L;&]C/B @7TYO9&4[#0HK(" @(" @='EP961E9B!?3&ES=%]N
M;V1E7V)A<V4\7T%L;&]C/B @7TYO9&5?8F%S93L-"BL@(" @("!?3F]D92H@
M7U]C=7(@/2!S=&%T:6-?8V%S=#Q?3F]D92H^*'-T871I8U]C87-T/%].;V1E
M7V)A<V4J/B@F*G1H:7,M/E]-7VEM<&PN7TU?;F]D92Y?35]N97AT*2D[#0H@
M(" @(" @=VAI;&4@*%]?8W5R("$]("9T:&ES+3Y?35]I;7!L+E]-7VYO9&4I
M"B @(" @("!["B @(" @(" @(%].;V1E*B!?7W1M<" ](%]?8W5R.PHM(" @
M(" @("!?7V-U<B ]('-T871I8U]C87-T/%].;V1E*CXH7U]C=7(M/E]-7VYE
M>'0I.PHK(" @(" @("!?7V-U<B ]('-T871I8U]C87-T/%].;V1E*CXH<W1A
M=&EC7V-A<W0\7TYO9&5?8F%S92H^*"8J7U]C=7(M/E]-7VYE>'0I*3L-"B @
M(" @(" @('-T9#HZ7T1E<W1R;WDH)E]?=&UP+3Y?35]D871A*3L*(" @(" @
M(" @7TU?<'5T7VYO9&4H7U]T;7 I.PH@(" @(" @?0H@(" @('T*( H@("!T
M96UP;&%T93QT>7!E;F%M92!?5' L('1Y<&5N86UE(%]!;&QO8SX*(" @("!T
M>7!E;F%M92!L:7-T/%]4<"Q?06QL;V,^.CII=&5R871O<@H@(" @(&QI<W0\
M7U1P+%]!;&QO8SXZ.@H@(" @(&EN<V5R="AI=&5R871O<B!?7W!O<VET:6]N
M+"!C;VYS="!V86QU95]T>7!E)B!?7W@I"B @(" @>PHM(" @(" @7TYO9&4J
M(%]?=&UP(#T@7TU?8W)E871E7VYO9&4H7U]X*3L**R @(" @('1Y<&5N86UE
M(%].;V1E.CIP;VEN=&5R(%]?=&UP(#T@7TU?8W)E871E7VYO9&4H7U]X*3L-
M"B @(" @("!?7W1M<"T^:&]O:RA?7W!O<VET:6]N+E]-7VYO9&4I.PH@(" @
M(" @<F5T=7)N(%]?=&UP.PH@(" @('T*( H@("!T96UP;&%T93QT>7!E;F%M
892!?5' L('1Y<&5N86UE(%]!;&QO8SX*
`
end



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]