Boost logo

Boost Users :

From: Alexander Gutenev (gutenev_at_[hidden])
Date: 2008-04-26 13:25:46


Hello.

I was looking for a library to simplify building of simple and complex
predicates for sorting.
For example sort structure like this by member or by several members in
specific order.
struct data
{
  int a; int b; int c;
  int get_b() const { return b; }
};
And have std::vector<data> v to sort.

Boost.Bind or Boost.Lambda can simplify sorting by one member, like this:
std::sort(v.begin(), v.end(), boost::bind(&data::b, _1) <
boost::bind(&data::b, _2));

But not sorting by several ones, there's no easy way to concatenate sorting
predicates for usability in sorting.
For example, this is illegal:
std::sort(v.begin(), v.end(),
  (boost::bind(&data::b, _1) < boost::bind(&data::b, _2))
 || (boost::bind(&data::a, _1) < boost::bind(&data::a, _2)));
, because both predicate(_1, _2) and predicate(_2, _1) can be true then.

So I come to solution to this problem. Sorting by a, then by b and finally
by c can look like:
  std::sort(v.begin(), v.end(),
    by(get_a) || by(&data::get_b) || by(&data::c));
where get_b is member function, c is data member, and get_a is a free
function defined like this:
int get_a(const data& d)
{
  return d.a;
}
"by" function can also take predicate, like std::greater as its second
parameter.
The code with "by" function and a few more examples is attached.

Is there already another solution to this problem which I have missed ?
If not, is my code useful for someone else ?

begin 666 test.cpp
M(VEN8VQU9&4@/&%L9V]R:71H;3X-"B-I;F-L=61E(#QV96-T;W(^#0HC:6YC
M;'5D92 \<V5T/@T*(VEN8VQU9&4@/&)O;W-T+V)I;F0N:'!P/@T*(VEN8VQU
M9&4@/&)O;W-T+V9U;F-T:6]N+FAP<#X-"B-I;F-L=61E(")O<F1E<BYH(@T*
M#0IU<VEN9R!N86UE<W!A8V4@;W)D97([#0H-"B\O($%S<W5M92!S;VUE(&-L
M87-S('=I=&@@9&%T82!M96)E<G,@86YD(&UE;6)E<B!F=6YC=&EO;G,-"@T*
M<W1R=6-T(&1A=&$-"GL-"B @:6YT(&$[("!I;G0_at_8CL@(&EN="!C.PT*("!I
M;G0_at_9V5T7V(H*2!C;VYS="![(')E='5R;B!B.R!]#0I].PT*#0HO+R!A;F0@
M<V]M92!F=6YC=&EO;G,@=&AA="!C86X_at_8F4@8V%L;&5D('=I=&@@=&AA="!C
M;&%S<RX-"@T*:6YT(&=E=%]A*&-O;G-T(&1A=&$F(&0I#0I[#0H@(')E='5R
M;B!D+F$[#0I]#0H-"G9O:60@<V]R='9E8W1O<BAV;VED*0T*>PT*("!S=&0Z
M.G9E8W1O<CQD871A/B!V.PT*("!F;W(@*&EN="!I(#T@,#L@:2 A/2 W,#L@
M*RMI*0T*("![#0H@(" @9&%T82!D(#T@>W)A;F0H*2 E(#,L(')A;F0H*2 E
M(#,L(')A;F0H*2 E(#-].PT*(" @('8N<'5S:%]B86-K*&0I.PT*("!]#0H-
M"B @<W1D.CIS;W)T*'8N8F5G:6XH*2P@=BYE;F0H*2P@#0H@(" @8F]O<W0Z
M.F)I;F0H)F1A=&$Z.F(L(%\Q*2 \(&)O;W-T.CIB:6YD*"9D871A.CIB+"!?
M,BDI.PT*#0H-"B @#0H@("\O(%-O<G0_at_8GD@;VYE(&9I96QD("\@;65M8F5R
M(&9U;F-T:6]N("\@9G5N8W1I;VX@;V)J96-T+@T*("!S=&0Z.G-O<G0H=BYB
M96=I;B_at_I+"!V+F5N9"@I+"!B>2_at_F9&%T83HZ8RDI.PT*("!S=&0Z.G-O<G0H
M=BYB96=I;B_at_I+"!V+F5N9"@I+"!B>2_at_F9&%T83HZ9V5T7V(I*3L-"@T*(" O
M+R!3;W)T(&)Y('-E=F5R86P_at_9FEE;&1S+"!I;B!T:&4@<W!E8VEF:65D(&]R
M9&5R+@T*("!S=&0Z.G-O<G0H=BYB96=I;B_at_I+"!V+F5N9"@I+" -"B @("!B
M>2AG971?82D@?'P_at_8GDH)F1A=&$Z.F=E=%]B*2!\?"!B>2_at_F9&%T83HZ8RDI
M.PT*#0H@("\O(%-O<G0@=VET:"!S<&5C:69I960@<')E9&EC871E<RX-"B @
M<W1D.CIS;W)T*'8N8F5G:6XH*2P@=BYE;F0H*2P@#0H@(" @(" @8GDH9V5T
M7V$L(" @(" @("!S=&0Z.F=R96%T97(\:6YT/B_at_I*2 -"B @("!\?"!B>2_at_F
M9&%T83HZ9V5T7V(L('-T9#HZ9W)E871E<CQI;G0^*"DI( T*(" @('Q\(&)Y
M*"9D871A.CIC+" @(" @<W1D.CIG<F5A=&5R/&EN=#XH*2DI.PT*?0T*#0HO
M+R!5;F9O<G1U;F%L>2P_at_9F]R(&%N(&%S<V]C:6%T:79E(&-O;F%T:6YE<B!W
M92!N965D(&$@8VQA<W,L(&YO="!A;B!O8FIE8W0N#0HO+R!4:&ES(&-A;B!B
M92!W;W)K960_at_87)O=6YD('=I=&@@0F]O<W0N1G5N8W1I;VXN( T*+R\@5&AE
M<F4G<R!J=7-T(&]N92!E>'1R82!L979E;"!O9B!I;F1I<F5C=&EO;BX-"@T*
M<W1R=6-T(&UY7V-O;7!A<F5?9&%T87,-"GL-"B @;7E?8V]M<&%R95]D871A
M<RAV;VED*0T*(" @(#H@:6UP;%\H8GDH9V5T7V$I('Q\(&)Y*"9D871A.CIG
M971?8BD@?'P_at_8GDH)F1A=&$Z.F,I*0T*("![#0H@('T-"B @#0H@(&)O;VP@
M;W!E<F%T;W(H*2AC;VYS="!D871A)B!L:',L(&-O;G-T(&1A=&$F(')H<RD-
M"B @>PT*(" @(')E='5R;B!I;7!L7RAL:',L(')H<RD[#0H@('T-"@T*<')I
M=F%T93H-"B @8F]O<W0Z.F9U;F-T:6]N/&)O;VP@*&-O;G-T(&1A=&$F(&QH
M<RP_at_8V]N<W0_at_9&%T828@<FAS*3X@:6UP;%\[#0I].PT*#0IV;VED(&%S<V]C
M:6%T:79E*'9O:60I#0I[#0H@('-T9#HZ;75L=&ES970\9&%T82P@;7E?8V]M
M<&%R95]D871A<SX@=CL-"B @9F]R("AI;G0@:2 ](# [(&D@(3T_at_-S [("LK
M:2D-"B @>PT*(" @(&1A=&$@9" ]('MR86YD*"D@)2 S+"!R86YD*"D@)2 S
M+"!R86YD*"D@)2 S?3L-"B @("!V+FEN<V5R="AD*3L-"B @?0T*?0T*#0HO
M+R!4:&5R92!A;'-O(&UA>2!B92!S;VUE('!R961I8V%T92!T;R!B92!C;VUB
M:6YE9"!W:71H(&]T:&5R(&]R9&5R:6YG+@T*#0IS=')U8W0_at_8W5S=&]M7W!R
M961I8V%T90T*>PT*("!B;V]L(&]P97)A=&]R*"DH8V]N<W0_at_9&%T828@;&AS
M+"!C;VYS="!D871A)B!R:',I(&-O;G-T#0H@('L-"B @("!R971U<FX@*&QH
M<RYA("L@;&AS+F,I(#P@*')H<RYA("L@<FAS+F,I.PT*("!]#0I].PT*#0IV
M;VED(&-U<W1O;7!R961I8V%T92AV;VED*0T*>PT*("!S=&0Z.G9E8W1O<CQD
M871A/B!V.PT*("!F;W(@*&EN="!I(#T@,#L@:2 A/2 W,#L@*RMI*0T*("![
M#0H@(" @9&%T82!D(#T@>W)A;F0H*2 E(#,L(')A;F0H*2 E(#,L(')A;F0H
M*2 E(#-].PT*(" @('8N<'5S:%]B86-K*&0I.PT*("!]#0H@("\O(%-O<G0@
M9FER<W0_at_8GD@8B!M96UB97(@=&AE;B!B>2!C=7-T;VU?<')E9&EC871E#0H@
M('-T9#HZ<V]R="AV+F)E9VEN*"DL('8N96YD*"DL(&)Y*"9D871A.CIB*2!\
M?"!C=7-T;VU?<')E9&EC871E*"DI.PT*(" O+R!3;W)T(&9I<G-T(&)Y(&-U
M<W1O;5]P<F5D:6-A=&4@=&AE;B!B>2!B(&UE;6)E<@T*("!S=&0Z.G-O<G0H
M=BYB96=I;B_at_I+"!V+F5N9"@I+"!T;U]O<F1E<BAC=7-T;VU?<')E9&EC871E
M*"DI('Q\(&)Y*"9D871A.CIB*2D[#0I]#0H-"FEN="!M86EN*&EN="!A<F=C
M+"!C:&%R*B!A<F=V6UTI#0I[#0H@('-O<G1V96-T;W(H*3L-"B @87-S;V-I
M871I=F4H*3L-"B @8W5S=&]M<')E9&EC871E*"D[#0H-"B @<F5T=7)N(# [
-#0I]#0H-"@T*#0H-"@``
`
end

begin 666 Order.h
M(VEF;F1E9B!/4D1%4E](7TE.0TQ51$5$#0HC9&5F:6YE($]21$527TA?24Y#
M3%5$140-"@T*(W!R86=M82!O;F-E#0H-"B-I;F-L=61E(")/<F1E<E-I;7!L
M94]R9&5R<RYH(@T*(VEN8VQU9&4@(D]R9&5R0V]M<&QE>$]R9&5R<RYH(@T*
M#0IN86UE<W!A8V4@;W)D97(-"GL-"@T*+R\@3W9E<FQO861S(&]F(")B>2(@
M9G5N8W1I;VX-"@T*+R\@3F]N<')E9&EC871E('9E<G-I;VYS(&]F("=B>2<@
M9G5N8W1I;VX@*'1A:V5S(&]N92!P87)A;65T97(I+@T*#0IT96UP;&%T93QC
M;&%S<R!4+"!C;&%S<R!5/@T*9&5T86EL.CIB>5]M96UB97(\5"P_at_53X@8GDH
M52!4.CHJ;2D-"GL-"B @<F5T=7)N(&1E=&%I;#HZ8GE?;65M8F5R/%0L(%4^
M*&TI.PT*?3L-"@T*=&5M<&QA=&4\8VQA<W,@5"P_at_8VQA<W,@53X-"F1E=&%I
M;#HZ8GE?;65M7V9N7V,\5"P_at_53X@8GDH52 H5#HZ*FTI*'9O:60I(&-O;G-T
M*0T*>PT*("!R971U<FX_at_9&5T86EL.CIB>5]M96U?9FY?8SQ4+"!5/BAM*3L-
M"GT[#0H-"G1E;7!L871E/&-L87-S(%0L(&-L87-S(%4^#0ID971A:6PZ.F)Y
M7VUE;5]F;CQ4+"!5/B!B>2A5("A4.CHJ;2DH=F]I9"DI#0I[#0H@(')E='5R
M;B!D971A:6PZ.F)Y7VUE;5]F;CQ4+"!5/BAM*3L-"GT[#0H-"G1E;7!L871E
M/&-L87-S($8^#0ID971A:6PZ.F)Y7V9U;F-T:6]N/$8^(&)Y*$8_at_9BD-"GL-
M"B @<F5T=7)N(&1E=&%I;#HZ8GE?9G5N8W1I;VX\1CXH9BD[#0I].PT*#0HO
M+R!0<F5D:6-A=&4@=F5R<VEO;G,@;V8@)V)Y)R!F=6YC=&EO;B H=&%K97,@
M='=O('!A<F%M971E<G,L('!R961I8V%T92!A<R!S96-O;F0I+@T*#0IT96UP
M;&%T93QC;&%S<R!4+"!C;&%S<R!5+"!C;&%S<R!0/@T*9&5T86EL.CIB>5]M
M96UB97)?<'(\5"P_at_52P@4#X_at_8GDH52!4.CHJ;2P_at_4"!P<F5D*0T*>PT*("!R
M971U<FX_at_9&5T86EL.CIB>5]M96UB97)?<'(\5"P_at_52P@4#XH;2P@<')E9"D[
M#0I].PT*#0IT96UP;&%T93QC;&%S<R!4+"!C;&%S<R!5+"!C;&%S<R!0/@T*
M9&5T86EL.CIB>5]M96U?9FY?8U]P<CQ4+"!5+"!0/B!B>2A5("A4.CHJ;2DH
M=F]I9"D_at_8V]N<W0L(% @<')E9"D-"GL-"B @<F5T=7)N(&1E=&%I;#HZ8GE?
M;65M7V9N7V-?<'(\5"P_at_52P@4#XH;2P@<')E9"D[#0I].PT*#0IT96UP;&%T
M93QC;&%S<R!4+"!C;&%S<R!5+"!C;&%S<R!0/@T*9&5T86EL.CIB>5]M96U?
M9FY?<'(\5"P_at_52P@4#X_at_8GDH52 H5#HZ*FTI*'9O:60I+"!0('!R960I#0I[
M#0H@(')E='5R;B!D971A:6PZ.F)Y7VUE;5]F;E]P<CQ4+"!5+"!0/BAM+"!P
M<F5D*3L-"GT[#0H-"G1E;7!L871E/&-L87-S($8L(&-L87-S(% ^#0ID971A
M:6PZ.F)Y7V9U;F-T:6]N7W!R/$8L(% ^(&)Y*$8_at_9BP@4"!P<F5D*0T*>PT*
M("!R971U<FX_at_9&5T86EL.CIB>5]F=6YC=&EO;E]P<CQ&+"!0/BAF+"!P<F5D
M*3L-"GT[#0H-"B\O($-O;G9E<G-I;VX_at_9G)O;2!R96=U;&%R(&9U;F-T:6]N
M(&]B:F5C="!T;R!O<F1E<FEN9RX-"@T*=&5M<&QA=&4\8VQA<W,@4#X-"F1E
M=&%I;#HZ8GE?<')E9&EC871E/% ^('1O7V]R9&5R*% @<')E9"D-"GL-"B @
M<F5T=7)N(&1E=&%I;#HZ8GE?<')E9&EC871E/% ^*'!R960I.PT*?0T*#0H-
M"GT[("\O(&]R9&5R(&YA;65S<&%C90T*#0HC96YD:68@("\O("-I9FYD968@
03U)$15)?2%])3D-,541%1 ``
`
end

begin 666 OrderComplexOrders.h
M(VEF;F1E9B!/4D1%4D-/35!,15A/4D1%4E-?2%])3D-,541%1 T*(V1E9FEN
M92!/4D1%4D-/35!,15A/4D1%4E-?2%])3D-,541%1 T*#0HC<')A9VUA(&]N
M8V4-"@T*;F%M97-P86-E(&]R9&5R#0I[#0H-"FYA;65S<&%C92!D971A:6P@
M#0I[#0H@("\O("=/<B<@;W!E<F%T:6]N(&UE86YS(&EF(&%N9"!O;FQY(&EF
M(&QE9G0M:&%N9"US:61E(&]R9&5R('-H;W=S(&5Q=6EV86QE;F-Y#0H@("\O
M('1H96X@=7-E('1H92!R:6=H="UH86YD+7-I9&4@;VYE+"!O=&AE=VES92!C
M;VQL871E(&)Y(&QE9G0M:&%N9"US:61E(&]R9&5R+B -"B @+R\@5&AI<R!I
M<R!.3U0@=&AE('-A;64_at_87,@;&]G:6-A;"!O<BP_at_8F5C875S92!I9B!O<F1E
M<G,@<VAO=R!O<&]S:71E(')E<W5L="P-"B @+R\@=&AE;B!L;V=I8V%L(&]R
M(')E='5R;B!T<G5E('=I=&@@8F]T:" H*2!P87)A;65T97)S(&]R9&5R:6YG
M+@T*("!T96UP;&%T93QC;&%S<R!4+"!C;&%S<R!,:'-?3W)D97(L(&-L87-S
M(%)H<U]/<F1E<CX-"B @8VQA<W,@;W)D97)?;W(-"B @(" Z('!U8FQI8R!O
M<F1E<E]B87-E/%0L(&]R9&5R7V]R/%0L($QH<U]/<F1E<BP_at_4FAS7T]R9&5R
M/B ^#0H@('L-"B @<')I=F%T93H-"B @("!,:'-?3W)D97(@;&AS7V]R9&5R
M7SL-"B @("!2:'-?3W)D97(@<FAS7V]R9&5R7SL-"B @<'5B;&EC._at_T*(" @
M(&]R9&5R7V]R*$QH<U]/<F1E<B!L:'-?;W)D97(L(%)H<U]/<F1E<B!R:'-?
M;W)D97(I#0H@(" @(" Z(&QH<U]O<F1E<E\H;&AS7V]R9&5R*0T*(" @(" @
M+"!R:'-?;W)D97)?*')H<U]O<F1E<BD-"B @("![#0H@(" @?0T*#0H@(" @
M8F]O;"!O<&5R871O<B_at_I*&-O;G-T(%0F(&QH<RP_at_8V]N<W0_at_5"8@<FAS*2!C
M;VYS= T*(" @('L-"B @(" @(&EF("AL:'-?;W)D97)?*&QH<RP@<FAS*2D@
M#0H@(" @("![#0H@(" @(" @(')E='5R;B!T<G5E.PT*(" @(" @?0T*(" @
M(" @96QS92!I9B H;&AS7V]R9&5R7RAR:',L(&QH<RDI#0H@(" @("![#0H@
M(" @(" @(')E='5R;B!F86QS93L-"B @(" @('T-"B @(" @(&5L<V4-"B @
M(" @('L-"B @(" @(" @<F5T=7)N(')H<U]O<F1E<E\H;&AS+"!R:',I.PT*
M(" @(" @?0T*(" @('T-"B @?3L@+R\@;W)D97)?;W(@8VQA<W,-"@T*(" O
M+R!V;VED('-P96-I86QI>F%T:6]N(&UE86YS('1H870@='EP92!O9B!4('=I
M;&P_at_8F4@9&5D=6-E9"!I;B!P;&%C92!O9B H*2!C86QL+@T*("!T96UP;&%T
M93QC;&%S<R!,:'-?3W)D97(L(&-L87-S(%)H<U]/<F1E<CX-"B @8VQA<W,@
M;W)D97)?;W(\=F]I9"P_at_3&AS7T]R9&5R+"!2:'-?3W)D97(^#0H@(" @.B!P
M=6)L:6,@;W)D97)?8F%S93QV;VED+"!O<F1E<E]O<CQV;VED+"!,:'-?3W)D
M97(L(%)H<U]/<F1E<CX@/@T*("![#0H@('!R:79A=&4Z#0H@(" @3&AS7T]R
M9&5R(&QH<U]O<F1E<E\[#0H@(" @4FAS7T]R9&5R(')H<U]O<F1E<E\[#0H@
M('!U8FQI8SH-"B @("!O<F1E<E]O<BA,:'-?3W)D97(@;&AS7V]R9&5R+"!2
M:'-?3W)D97(@<FAS7V]R9&5R*0T*(" @(" @.B!L:'-?;W)D97)?*&QH<U]O
M<F1E<BD-"B @(" @("P@<FAS7V]R9&5R7RAR:'-?;W)D97(I#0H@(" @>PT*
M(" @('T-"@T*(" @('1E;7!L871E/'1Y<&5N86UE(%0^#0H@(" @8F]O;"!O
M<&5R871O<B_at_I*&-O;G-T(%0F(&QH<RP_at_8V]N<W0_at_5"8@<FAS*2!C;VYS= T*
M(" @('L-"B @(" @(&EF("AL:'-?;W)D97)?*&QH<RP@<FAS*2D@#0H@(" @
M("![#0H@(" @(" @(')E='5R;B!T<G5E.PT*(" @(" @?0T*(" @(" @96QS
M92!I9B H;&AS7V]R9&5R7RAR:',L(&QH<RDI#0H@(" @("![#0H@(" @(" @
M(')E='5R;B!F86QS93L-"B @(" @('T-"B @(" @(&5L<V4-"B @(" @('L-
M"B @(" @(" @<F5T=7)N(')H<U]O<F1E<E\H;&AS+"!R:',I.PT*(" @(" @
M?0T*(" @('T-"B @?3L@+R\@;W)D97)?;W(@8VQA<W,-"@T*("!T96UP;&%T
M93QC;&%S<R!4+"!C;&%S<R!4:&ES7T]R9&5R/@T*("!C;&%S<R!O<F1E<E]B
M87-E#0H@('L-"B @<'5B;&EC._at_T*(" @('1E;7!L871E/'1Y<&5N86UE(%)H
M<U]/<F1E<CX-"B @("!O<F1E<E]O<CQ4+"!4:&ES7T]R9&5R+"!2:'-?3W)D
M97(^(&]P97)A=&]R('Q\("A2:'-?3W)D97(@<FAS7V]R9&5R*0T*(" @('L-
M"B @(" @(%1H:7-?3W)D97(@*FQH<U]O<F1E<B ]('-T871I8U]C87-T/%1H
M:7-?3W)D97(J/BAT:&ES*3L-"B @(" @(')E='5R;B!O<F1E<E]O<CQ4+"!4
M:&ES7T]R9&5R+"!2:'-?3W)D97(^*"IL:'-?;W)D97(L(')H<U]O<F1E<BD[
M#0H@(" @?0T*("!].R O+R!O<F1E<E]B87-E(&-L87-S#0H-"GT[("\O(&1E
M=&%I;"!N86UE<W!A8V4-"B @#0I].R O+R!O<F1E<B!N86UE<W!A8V4-"@T*
M(V5N9&EF(" O+R C:69N9&5F($]21$520T]-4$Q%6$]21$524U](7TE.0TQ5
#1$5$
`
end

begin 666 OrderSimpleOrders.h
M(VEF;F1E9B!/4D1%4E-)35!,14]21$524U](7TE.0TQ51$5$#0HC9&5F:6YE
M($]21$524TE-4$Q%3U)$15)37TA?24Y#3%5$140-"@T*(W!R86=M82!O;F-E
M#0H-"FYA;65S<&%C92!O<F1E<@T*>PT*#0IN86UE<W!A8V4_at_9&5T86EL( T*
M>PT*(" O+R!&;W)W87)D(&1E8VQA<F%T:6]N(&]F(&)A<V4_at_9F]R(&%L;"!O
M<F1E<G,-"B @+R\@8F%S92!P<F]V:61E<R!\?"!A;F0@)B8@;W!E<F%T;W)S
M+@T*("!T96UP;&%T93QC;&%S<R!4+"!C;&%S<R!4:&ES7T]R9&5R/@T*("!C
M;&%S<R!O<F1E<E]B87-E.PT*#0H@("\O#0H@("\O($YO;G!R961I8V%T92!V
M97)S:6]N<R!O9B!S:6UP;&4@;W)D97)I;F=S+@T*(" O+PT*#0H@("\O($]R
M9&5R(&)Y(&1A=&$@;65M8F5R+" H*2!T86ME<R!T=V\@5"=S(&)Y(&-O;G-T
M(')E9BX-"B @=&5M<&QA=&4\8VQA<W,@5"P_at_8VQA<W,@53X-"B @8VQA<W,@
M8GE?;65M8F5R#0H@(" @.B!P=6)L:6,@;W)D97)?8F%S93Q4+"!B>5]M96UB
M97(\5"P_at_53X@/@T*("![#0H@('!R:79A=&4Z#0H@(" @52!4.CHJ(&U?.PT*
M("!P=6)L:6,Z#0H@(" @97AP;&EC:70_at_8GE?;65M8F5R*%4_at_5#HZ*FTI#0H@
M(" @(" Z(&U?*&TI#0H@(" @>PT*(" @('T-"B @("!B;V]L(&]P97)A=&]R
M*"DH8V]N<W0_at_5"8@;&AS+"!C;VYS="!4)B!R:',I(&-O;G-T#0H@(" @>PT*
M(" @(" @<F5T=7)N(&QH<RXJ;5\@/"!R:',N*FU?.PT*(" @('T-"B @?3L@
M+R\@8GE?;65M8F5R(&-L87-S#0H@( T*(" O+R!/<F1E<B!B>2!C;VYS="!M
M96UB97(@9G5N8W1I;VXL("@I('1A:V5S('1W;R!4)W,@8GD_at_8V]N<W0@<F5F
M+@T*("!T96UP;&%T93QC;&%S<R!4+"!C;&%S<R!5/@T*("!C;&%S<R!B>5]M
M96U?9FY?8PT*(" @(#H@<'5B;&EC(&]R9&5R7V)A<V4\5"P_at_8GE?;65M7V9N
M7V,\5"P_at_53X@/@T*("![#0H@('!R:79A=&4Z#0H@(" @='EP961E9B!5("A4
M.CHJ32DH=F]I9"D_at_8V]N<W0[#0H@(" @32!M7SL-"B @<'5B;&EC._at_T*(" @
M(&5X<&QI8VET(&)Y7VUE;5]F;E]C*$T@;2D-"B @(" @(#H@;5\H;2D-"B @
M("![#0H@(" @?0T*(" @(&)O;VP@;W!E<F%T;W(H*2AC;VYS="!4)B!L:',L
M(&-O;G-T(%0F(')H<RD_at_8V]N<W0-"B @("![#0H@(" @("!R971U<FX@*&QH
M<RXJ;5\I*"D@/" H<FAS+BIM7RDH*3L-"B @("!]#0H@('T[("\O(&)Y7VUE
M;5]F;E]C(&-L87-S#0H-"B @+R\@3W)D97(@8GD@;F]N+6-O;G-T(&UE;6)E
M<B!F=6YC=&EO;BP@<')E9&EC871E('1A:V5S('1W;R!4)W,@8GD@=F%L=64N
M#0H@('1E;7!L871E/&-L87-S(%0L(&-L87-S(%4^#0H@(&-L87-S(&)Y7VUE
M;5]F;@T*(" @(#H@<'5B;&EC(&]R9&5R7V)A<V4\5"P_at_8GE?;65M7V9N/%0L
M(%4^(#X-"B @>PT*("!P<FEV871E._at_T*(" @('1Y<&5D968_at_52 H5#HZ*DTI
M*'9O:60I.PT*(" @($T@;5\[#0H@('!U8FQI8SH-"B @("!E>'!L:6-I="!B
M>5]M96U?9FXH32!M*0T*(" @(" @.B!M7RAM*0T*(" @(" @+"!P<F5D7RAP
M<F5D*0T*(" @('L-"B @("!]#0H@(" @8F]O;"!O<&5R871O<B_at_I*%0@;&AS
M+"!4(')H<RD_at_8V]N<W0-"B @("![#0H@(" @("!R971U<FX@*&QH<RXJ;5\I
M*"D@/" H<FAS+BIM7RDH*3L-"B @("!]#0H@('T[("\O(&)Y7VUE;5]F;B!C
M;&%S<PT*#0H@("\O($]R9&5R(&)Y(&%N>71H:6YG(&-A;&QA8FQE+@T*("!T
M96UP;&%T93QT>7!E;F%M92!&/@T*("!C;&%S<R!B>5]F=6YC=&EO;@T*(" @
M(#H@<'5B;&EC(&]R9&5R7V)A<V4\=F]I9"P_at_8GE?9G5N8W1I;VX\1CX@/@T*
M("![#0H@('!R:79A=&4Z#0H@(" @1B!F7SL-"B @<'5B;&EC._at_T*(" @(&5X
M<&QI8VET(&)Y7V9U;F-T:6]N*$8_at_9BD-"B @(" @(#H_at_9E\H9BD-"B @("![
M#0H@(" @?0T*(" @('1E;7!L871E/'1Y<&5N86UE(%0^#0H@(" @8F]O;"!O
M<&5R871O<B_at_I*&-O;G-T(%0F(&QH<RP_at_8V]N<W0_at_5"8@<FAS*2!C;VYS= T*
M(" @('L-"B @(" @(')E='5R;B!F7RAL:',I(#P_at_9E\H<FAS*3L-"B @("!]
M#0H@('T[#0H-"B @+R\-"B @+R\@4')E9&EC871E('9E<G-I;VYS(&]F('1H
M92!C;&%S<V5S(&%B;W9E#0H@("\O#0H-"B @+R\@3W)D97(@8GD_at_9&%T82!M
M96UB97(L("@I('1A:V5S('1W;R!4)W,@8GD_at_8V]N<W0@<F5F+@T*("!T96UP
M;&%T93QC;&%S<R!4+"!C;&%S<R!5+"!C;&%S<R!0<F5D/@T*("!C;&%S<R!B
M>5]M96UB97)?<'(-"B @(" Z('!U8FQI8R!O<F1E<E]B87-E/%0L(&)Y7VUE
M;6)E<E]P<CQ4+"!5+"!0<F5D/B ^#0H@('L-"B @<')I=F%T93H-"B @("!5
M(%0Z.BH@;5\[#0H@(" @4')E9"!P<F5D7SL-"B @<'5B;&EC._at_T*(" @(&)Y
M7VUE;6)E<E]P<BA5(%0Z.BIM+"!0<F5D('!R960I#0H@(" @(" Z(&U?*&TI
M#0H@(" @(" L('!R961?*'!R960I#0H@(" @>PT*(" @('T-"B @("!B;V]L
M(&]P97)A=&]R*"DH8V]N<W0_at_5"8@;&AS+"!C;VYS="!4)B!R:',I(&-O;G-T
M#0H@(" @>PT*(" @(" @<F5T=7)N('!R961?*&QH<RXJ;5\L(')H<RXJ;5\I
M.PT*(" @('T-"B @?3L@+R\@8GE?;65M8F5R(&-L87-S#0H@( T*(" O+R!/
M<F1E<B!B>2!C;VYS="!M96UB97(@9G5N8W1I;VXL("@I('1A:V5S('1W;R!4
M)W,@8GD_at_8V]N<W0@<F5F+@T*("!T96UP;&%T93QC;&%S<R!4+"!C;&%S<R!5
M+"!C;&%S<R!0<F5D/@T*("!C;&%S<R!B>5]M96U?9FY?8U]P<@T*(" @(#H@
M<'5B;&EC(&]R9&5R7V)A<V4\5"P_at_8GE?;65M7V9N7V-?<'(\5"P_at_52P@4')E
M9#X@/@T*("![#0H@('!R:79A=&4Z#0H@(" @='EP961E9B!5("A4.CHJ32DH
M=F]I9"D_at_8V]N<W0[#0H@(" @32!M7SL-"B @("!0<F5D('!R961?.PT*("!P
M=6)L:6,Z#0H@(" @8GE?;65M7V9N7V-?<'(H32!M+"!0<F5D('!R960I#0H@
M(" @(" Z(&U?*&TI#0H@(" @(" L('!R961?*'!R960I#0H@(" @>PT*(" @
M('T-"B @("!B;V]L(&]P97)A=&]R*"DH8V]N<W0_at_5"8@;&AS+"!C;VYS="!4
M)B!R:',I(&-O;G-T#0H@(" @>PT*(" @(" @<F5T=7)N('!R961?*"AL:',N
M*FU?*2_at_I+" H<FAS+BIM7RDH*2D[#0H@(" @?0T*("!].R O+R!B>5]M96U?
M9FY?8R!C;&%S<PT*#0H@("\O($]R9&5R(&)Y(&YO;BUC;VYS="!M96UB97(@
M9G5N8W1I;VXL("@I('1A:V5S('1W;R!4)W,@8GD@=F%L=64N#0H@('1E;7!L
M871E/&-L87-S(%0L(&-L87-S(%4L(&-L87-S(%!R960^#0H@(&-L87-S(&)Y
M7VUE;5]F;E]P<@T*(" @(#H@<'5B;&EC(&]R9&5R7V)A<V4\5"P_at_8GE?;65M
M7V9N7W!R/%0L(%4L(%!R960^(#X-"B @>PT*("!P<FEV871E._at_T*(" @('1Y
M<&5D968_at_52 H5#HZ*DTI*'9O:60I.PT*(" @($T@;5\[#0H@(" @4')E9"!P
M<F5D7SL-"B @<'5B;&EC._at_T*(" @(&)Y7VUE;5]F;E]P<BA-(&TL(%!R960@
M<')E9"D-"B @(" @(#H@;5\H;2D-"B @(" @("P@<')E9%\H<')E9"D-"B @
M("![#0H@(" @?0T*(" @(&)O;VP@;W!E<F%T;W(H*2A4(&QH<RP_at_5"!R:',I
M(&-O;G-T#0H@(" @>PT*(" @(" @<F5T=7)N('!R961?*"AL:',N*FU?*2_at_I
M+" H<FAS+BIM7RDH*2D[#0H@(" @?0T*("!].R O+R!B>5]M96U?9FY?<'(@
M8VQA<W,-"@T*#0H@("\O($]R9&5R(&)Y(&%N>71H:6YG(&-A;&QA8FQE+@T*
M("!T96UP;&%T93QT>7!E;F%M92!&+"!C;&%S<R!0<F5D/@T*("!C;&%S<R!B
M>5]F=6YC=&EO;E]P<@T*(" @(#H@<'5B;&EC(&]R9&5R7V)A<V4\=F]I9"P@
M8GE?9G5N8W1I;VY?<'(\1BP_at_4')E9#X@/@T*("![#0H@('!R:79A=&4Z#0H@
M(" @1B!F7SL-"B @("!0<F5D('!R961?.PT*("!P=6)L:6,Z#0H@(" @8GE?
M9G5N8W1I;VY?<'(H1B!F+"!0<F5D('!R960I#0H@(" @(" Z(&9?*&8I#0H@
M(" @(" L('!R961?*'!R960I#0H@(" @>PT*(" @('T-"B @("!T96UP;&%T
M93QT>7!E;F%M92!4/@T*(" @(&)O;VP@;W!E<F%T;W(H*2AC;VYS="!4)B!L
M:',L(&-O;G-T(%0F(')H<RD_at_8V]N<W0-"B @("![#0H@(" @("!R971U<FX@
M<')E9%\H9E\H;&AS*2P_at_9E\H<FAS*2D[#0H@(" @?0T*("!].PT*#0H@("\O
M#0H@("\O(%-P96-I86P_at_8V%S92!W:&5N('=E(&AA=F4@:G5S="!A('!R961C
M871E+@T*(" O+PT*#0H@('1E;7!L871E/&-L87-S(%!R960^#0H@(&-L87-S
M(&)Y7W!R961I8V%T90T*(" @(#H@<'5B;&EC(&]R9&5R7V)A<V4\=F]I9"P@
M8GE?<')E9&EC871E/%!R960^(#X-"B @>PT*("!P<FEV871E._at_T*(" @(%!R
M960@<')E9%\[#0H@('!U8FQI8SH-"B @("!E>'!L:6-I="!B>5]P<F5D:6-A
M=&4H4')E9"!P<F5D*0T*(" @(" @.B!P<F5D7RAP<F5D*0T*(" @('L-"B @
M("!]#0H@(" @=&5M<&QA=&4\='EP96YA;64_at_5#X-"B @("!B;V]L(&]P97)A
M=&]R*"DH8V]N<W0_at_5"8@;&AS+"!C;VYS="!4)B!R:',I(&-O;G-T#0H@(" @
M>PT*(" @(" @<F5T=7)N('!R961?*&QH<RP@<FAS*3L-"B @("!]#0H@('T[
M#0H-"GT[("\O(&1E=&%I;"!N86UE<W!A8V4-"@T*?3L@+R\@;W)D97(@;F%M
M97-P86-E#0H-"B-E;F1I9B @+R\@(VEF;F1E9B!/4D1%4E-)35!,14]21$52
,4U](7TE.0TQ51$5$
`
end


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net