Boost logo

Boost :

From: Andy Little (andy_at_[hidden])
Date: 2004-02-09 05:46:13


"David Abrahams" <dave_at_[hidden]> wrote in message
news:ud68thd7w.fsf_at_boost-consulting.com...
> "Andy Little" <andy_at_[hidden]> writes:
>
> > To me that reads Dont Use Leading Underscores. Period.
> >
> > Perhaps you need to lobby to have the wording changed to:
> >
> > "Each name that begins with an underscore is reserved to the
implementation
> > in the global namespace".
>
> Don't make work for the rest of us.

hmm... just pointing out the rules, which, if not followed, cause a large
volume of macros and workarounds,obscure bugs and hence a lot of tedious and
unnecessary work for somebody, but which, if followed, save that work for
everybody.

Rule actually reads:

"Each name that begins with an underscore is reserved to the implementation
for use as a name in the global namespace".

> If you care about the issue,
> perhaps you need to lobby.

Rule is fine as it stands AFAICS. Whatever ...

There is a rational header in boost/mpl/math/rational_c.hpp. but has no
functionality. Enclosed is an implementation with some functionality.

regards
Andy Little

begin 666 rational_c.txt
M#0HC:69N9&5F($)/3U-47TU03%]2051)3TY!3%]#7TA04%])3D-,541%1 T*
M(V1E9FEN92!"3T]35%]-4$Q?4D%424].04Q?0U](4%!?24Y#3%5$140-"@T*
M+R\M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+0T*+R\@8F]O<W0O
M;7!L+W)A=&EO;F%L7V,N:'!P(&AE861E<B!F:6QE#0HO+R!3964@:'1T<#HO
M+W=W=RYB;V]S="YO<F<@9F]R('5P9&%T97,L(&1O8W5M96YT871I;VXL(&%N
M9"!R979I<VEO;B!H:7-T;W)Y+@T*+R\M+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+0T*+R\-"B\O($-O<'ER:6=H=" H8RD@,C P,"TP,@T*+R\@
M06QE:W-E>2!'=7)T;W9O>0T*+R\-"B\O(%!E<FUI<W-I;VX@=&\@=7-E+"!C
M;W!Y+"!M;V1I9GDL(&1I<W1R:6)U=&4_at_86YD('-E;&P@=&AI<R!S;V9T=V%R
M90T*+R\@86YD(&ET<R!D;V-U;65N=&%T:6]N(&9O<B!A;GD@<'5R<&]S92!I
M<R!H97)E8GD_at_9W)A;G1E9"!W:71H;W5T(&9E92P@#0HO+R!P<F]V:61E9"!T
M:&%T('1H92!A8F]V92!C;W!Y<FEG:'0@;F]T:6-E(&%P<&5A<G,@:6X_at_86QL
M(&-O<&EE<R!A;F0@#0HO+R!T:&%T(&)O=&@@=&AE(&-O<'ER:6=H="!N;W1I
M8V4_at_86YD('1H:7,@<&5R;6ES<VEO;B!N;W1I8V4_at_87!P96%R(&EN( T*+R\@
M<W5P<&]R=&EN9R!D;V-U;65N=&%T:6]N+B!.;R!R97!R97-E;G1A=&EO;G,@
M87)E(&UA9&4_at_86)O=70@=&AE( T*+R\@<W5I=&%B:6QI='D@;V8@=&AI<R!S
M;V9T=V%R92!F;W(@86YY('!U<G!O<V4N($ET(&ES('!R;W9I9&5D(")A<R!I
M<R(@#0HO+R!W:71H;W5T(&5X<')E<W,@;W(@:6UP;&EE9"!W87)R86YT>2X-
M"@T*+R\@;6]D<R!B>2!-871T:&EA<R!38VAA8F5L+"!*86X_at_3&%N9V5R(&%N
M9"!!;F1Y(&QI='1L90T*#0HC:6YC;'5D92 B8F]O<W0O<W1A=&EC7V%S<V5R
M="YH<' B#0HC:6YC;'5D92 B8F]O<W0O;7!L+W9O:60N:'!P(@T*(VEN8VQU
M9&4@(F)O;W-T+VUP;"]I9BYH<' B#0HC:6YC;'5D92 B8F]O<W0O;6%T:"]C
M;VUM;VY?9F%C=&]R+FAP<"(-"B-I;F-L=61E(")B;V]S="]M<&PO<&QU<RYH
M<' B#0HC:6YC;'5D92 B8F]O<W0O;7!L+VUI;G5S+FAP<"(-"B-I;F-L=61E
M(")B;V]S="]M<&PO;75L=&EP;&EE<RYH<' B#0HC:6YC;'5D92 B8F]O<W0O
M;7!L+V1I=FED97,N:'!P(@T*(VEN8VQU9&4@(F)O;W-T+VUP;"]N96=A=&4N
M:'!P(@T*+R\@861D(" @(&]R+"!A;F0_at_971C#0H-"B\O(&-O;7!I;&4@=&EM
M92!R871I;VYA;"!N=6UB97(-"B\O('5S:6YG(&UP;"!O<&5R871O<G,-"@T*
M;F%M97-P86-E(&)O;W-T>VYA;65S<&%C92!M<&Q[#0H-"B @("!T96UP;&%T
M93P-"B @(" @(" @='EP96YA;64_at_26YT96=E<E1Y<&4L#0H@(" @(" @($EN
M=&5G97)4>7!E($XL#0H@(" @(" @($EN=&5G97)4>7!E($0-"B @(" ^#0H@
M(" @<W1R=6-T(')A=&EO;F%L7V,@.PT*?7TO+V)O;W-T.CIM<&P-"@T*;F%M
M97-P86-E(&)O;W-T>VYA;65S<&%C92!M<&Q[#0H-"B @("!T96UP;&%T93P-
M"B @(" @(" @='EP96YA;64_at_26YT96=E<E1Y<&4L#0H@(" @(" @($EN=&5G
M97)4>7!E($XL#0H@(" @(" @($EN=&5G97)4>7!E($0@/2 Q#0H@(" @/@T*
M(" @('-T<G5C="!R871I;VYA;%]C('L-"B @("!P<FEV871E._at_T*(" @(" @
M(" -"B @(" @(" @<W1A=&EC(&-O;G-T($EN=&5G97)4>7!E('!O<U]N=6UE
M7VEN( T*(" @(" @(" ]($X@/CT@," _($X_at_.B M3CL-"B @(" @(" @<W1A
M=&EC(&-O;G-T($EN=&5G97)4>7!E('!O<U]D96YO;5]I;B -"B @(" @(" @
M/2!$(#X](# @/R!$(#H@+40[#0H-"B @(" @(" @+R\@<W1A=&EC7V=C9"!R
M971U<FYS('5N<VEG;F5D(&QO;F<-"B @(" @(" @<W1A=&EC(&-O;G-T($EN
M=&5G97)4>7!E(&=C9" ]('-T871I8U]C87-T/$EN=&5G97)4>7!E/B -"B @
M(" @(" @*&)O;W-T.CIM871H.CIS=&%T:6-?9V-D/ T*(" @(" @(" @(" @
M<W1A=&EC7V-A<W0\=6YS:6=N960@;&]N9SXH<&]S7VYU;65?:6XI+ T*(" @
M(" @(" @(" @<W1A=&EC7V-A<W0\=6YS:6=N960@;&]N9SXH<&]S7V1E;F]M
M7VEN*0T*(" @(" @(" ^.CIV86QU92D[#0H-"B @(" @(" @<W1A=&EC(&-O
M;G-T($EN=&5G97)4>7!E(&YU;65?:6X@#0H@(" @(" @(#T@*"!.("H_at_1" ^
M/2 P*0T*(" @(" @(" _('!O<U]N=6UE7VEN( T*(" @(" @(" Z("UP;W-?
M;G5M95]I;CL@#0H@(" @<'5B;&EC._at_T*(" @(" @("!S=&%T:6,@8V]N<W0@
M26YT96=E<E1Y<&4@;G5M97)A=&]R(#T@;G5M95]I;B]G8V0[#0H@(" @(" @
M('-T871I8R!C;VYS="!);G1E9V5R5'EP92!D96YO;6EN871O<B ]('!O<U]D
M96YO;5]I;B]G8V0[#0H@(" @<')I=F%T93H-"B @(" @(" @='EP961E9B!R
M871I;VYA;%]C(#P-"B @(" @(" @(" @($EN=&5G97)4>7!E+ T*(" @(" @
M(" @(" @;G5M97)A=&]R+ T*(" @(" @(" @(" @9&5N;VUI;F%T;W(-"B @
M(" @(" @/B!M87EB95]T>7!E.PT*(" @('!U8FQI8SH@#0H@(" @(" @("\O
M<')E=F5N="!D:78@, T*(" @(" @("!T>7!E9&5F('1Y<&5N86UE(&EF7V,\
M#0H@(" @(" @(" @("!S=&%T:6-?8V%S=#QB;V]L/BAD96YO;6EN871O<BDL
M#0H@(" @(" @(" @("!M87EB95]T>7!E+ T*(" @(" @(" @(" @=F]I9%\-
M"B @(" @(" @/CHZ='EP92!T>7!E.PT*#0H@(" @(" @("\O*BHJ*BHJ*BHJ
M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ#0H@(" @(" @("\O($AI+"!Y;W4_at_9V5T
M(&AE<F4@#0H@(" @(" @("\O(&EF(&1E;F]M:6YA=&]R(&ES('IE<F\@:64@
M,2\P#0H@(" @(" @($)/3U-47U-4051)0U]!4U-%4E0H9&5N;VUI;F%T;W(I
M.PT*(" @(" @(" O+RHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BH-
M"B @("!].PT*(" @#0H@(" @=&5M<&QA=&4\#0H@(" @(" @('1Y<&5N86UE
M($EN=&5G97)4>7!E+ T*(" @(" @("!);G1E9V5R5'EP92!.+ T*(" @(" @
M("!);G1E9V5R5'EP92!$#0H@(" @/B -"B @("!S=')U8W0@;F5G871E/" -
M"B @(" @(" @<F%T:6]N86Q?8SP-"B @(" @(" @(" @($EN=&5G97)4>7!E
M+ T*(" @(" @(" @(" @3BP-"B @(" @(" @(" @($0-"B @(" @(" @/B -
M"B @(" ^>R -"B @(" @(" @='EP961E9B!T>7!E;F%M92!R871I;VYA;%]C
M/$EN=&5G97)4>7!E+"U.+$0^.CIT>7!E('1Y<&4[( T*(" @('T[#0H-"B @
M("!T96UP;&%T93P-"B @(" @(" @='EP96YA;64_at_26YT96=E<E1Y<&4L#0H@
M(" @(" O+R @='EP96YA;64_at_26YT96=E<E1Y<&4R+ T*(" @(" @("!);G1E
M9V5R5'EP92!.,2P-"B @(" @(" @26YT96=E<E1Y<&4_at_1#$L#0H@(" @(" @
M($EN=&5G97)4>7!E($XR+ T*(" @(" @("!);G1E9V5R5'EP92!$,@T*(" @
M(#X@#0H@(" @<W1R=6-T('!L=7,\( T*(" @(" @(')A=&EO;F%L7V,\26YT
M96=E<E1Y<&4L3C$L1#$^+ T*(" @(" @(')A=&EO;F%L7V,\26YT96=E<E1Y
M<&4L3C(L1#(^( T*(" @(#Y[( T*(" @(" @("!T>7!E9&5F('1Y<&5N86UE
M(')A=&EO;F%L7V,\#0H@(" @(" @(" @("!);G1E9V5R5'EP92P-"B @(" @
M(" @(" @($XQ("H_at_1#(@*R!.,B J($0Q+ T*(" @(" @(" @(" @1#$@*B!$
M,@T*(" @(" @(" ^.CIT>7!E('1Y<&4[( T*(" @('T[#0H@(" @#0H@(" @
M=&5M<&QA=&4\#0H@(" @(" @('1Y<&5N86UE($EN=&5G97)4>7!E+ T*(" @
M(" @("!);G1E9V5R5'EP92!.,2P-"B @(" @(" @26YT96=E<E1Y<&4_at_1#$L
M#0H@(" @(" @($EN=&5G97)4>7!E($XR+ T*(" @(" @("!);G1E9V5R5'EP
M92!$,@T*(" @(#X@#0H@(" @<W1R=6-T(&UI;G5S/ T*(" @(" @("!R871I
M;VYA;%]C/$EN=&5G97)4>7!E+$XQ+$0Q/BP-"B @(" @(" @<F%T:6]N86Q?
M8SQ);G1E9V5R5'EP92Q.,BQ$,CX@#0H@(" @/GL@#0H@(" @(" @('1Y<&5D
M968@='EP96YA;64@<F%T:6]N86Q?8SP-"B @(" @(" @(" @($EN=&5G97)4
M>7!E+ T*(" @(" @(" @(" @3C$@*B!$,B M($XR("H_at_1#$L#0H@(" @(" @
M(" @("!$,2 J($0R#0H@(" @(" @(#XZ.G1Y<&4@='EP93L@#0H@(" @?3L-
M"@T*(" @('1E;7!L871E/ T*(" @(" @("!T>7!E;F%M92!);G1E9V5R5'EP
M92P-"B @(" @(" @26YT96=E<E1Y<&4_at_3C$L#0H@(" @(" @($EN=&5G97)4
M>7!E($0Q+ T*(" @(" @("!);G1E9V5R5'EP92!.,BP-"B @(" @(" @26YT
M96=E<E1Y<&4_at_1#(-"B @(" ^( T*(" @('-T<G5C="!M=6QT:7!L:65S/ T*
M(" @(" @("!R871I;VYA;%]C/$EN=&5G97)4>7!E+$XQ+$0Q/BP-"B @(" @
M(" @<F%T:6]N86Q?8SQ);G1E9V5R5'EP92Q.,BQ$,CX@#0H@(" @/GL@#0H@
M(" @(" @('1Y<&5D968@='EP96YA;64@<F%T:6]N86Q?8SP-"B @(" @(" @
M(" @($EN=&5G97)4>7!E+ T*(" @(" @(" @(" @3C$J3C(L#0H@(" @(" @
M(" @("!$,2I$,@T*(" @(" @(" ^.CIT>7!E('1Y<&4[( T*(" @('T[#0H-
M"B @("!T96UP;&%T93P-"B @(" @(" @='EP96YA;64_at_26YT96=E<E1Y<&4L
M#0H@(" @(" @($EN=&5G97)4>7!E($XQ+ T*(" @(" @("!);G1E9V5R5'EP
M92!$,2P-"B @(" @(" @26YT96=E<E1Y<&4_at_3C(L#0H@(" @(" @($EN=&5G
M97)4>7!E($0R#0H@(" @/B -"B @("!S=')U8W0_at_9&EV:61E<SP@#0H@(" @
M(" @('1Y<&5N86UE(')A=&EO;F%L7V,\26YT96=E<E1Y<&4L3C$L1#$^+ T*
M(" @(" @("!T>7!E;F%M92!R871I;VYA;%]C/$EN=&5G97)4>7!E+$XR+$0R
M/@T*(" @(#Y[#0H@(" @(" @('1Y<&5D968@='EP96YA;64@<F%T:6]N86Q?
M8SP-"B @(" @(" @(" @(" @($EN=&5G97)4>7!E+ T*(" @(" @(" @(" @
M(" @3C$@*B!$,BP-"B @(" @(" @(" @(" @*"!.,2 ]/2 P("D@/R Q(#H@
M*$0Q("H_at_3C(I(" @#0H@(" @(" @(#XZ.G1Y<&4@='EP93L@#0H@(" @?3L-
M"@T*?2!]+R]B;V]S=#HZ;7!L#0H-"B-E;F1I9B O+T)/3U-47TU03%]2051)
M3TY!3%]#7TA04%])3D-,541%1 T*#0HO+R!T97-T#0HO+R-I;F-L=61E(")R
M871I;VYA;%]C+FAP<"(-"B-I;F-L=61E(#QI;W-T<F5A;3X-"FEN="!M86EN
M*"D@#0I[#0H@(" @=7-I;F<@8F]O<W0Z.FUP;#HZ<F%T:6]N86Q?8SL-"B @
M("!U<VEN9R!N86UE<W!A8V4_at_8F]O<W0[#0H-"B @("!T>7!E9&5F(')A=&EO
M;F%L7V,\:6YT+#0L,CX@<F%T7V$[#0H@(" @<W1D.CIC;W5T(#P\(G)A=%]A
M(#T@(B \/"!R871?83HZ;G5M97)A=&]R(#P\)R\G#0H@(" @/#P@<F%T7V$Z
M.F1E;F]M:6YA=&]R(#P\)UQN)SL-"@T*(" @('1Y<&5D968@<F%T:6]N86Q?
M8SQI;G0L,RPV/B!R871?8CL-"B @("!S=&0Z.F-O=70@/#PB<F%T7V(@/2 B
M(#P\(')A=%]B.CIN=6UE<F%T;W(@/#PG+R<-"B @(" \/"!R871?8CHZ9&5N
M;VUI;F%T;W(@/#PG7&XG.PT*#0H@(" @='EP961E9B!M<&PZ.G!L=7,\<F%T
M7V$L<F%T7V(^.CIT>7!E(')A=%]P;'5S.PT*(" @('-T9#HZ8V]U=" \/")R
M871?82 K(')A=%]B(#T@(B \/"!R871?<&QU<SHZ;G5M97)A=&]R(#P\)R\G
M#0H@(" @/#P@<F%T7W!L=7,Z.F1E;F]M:6YA=&]R(#P\)UQN)SL-"@T*(" @
M('1Y<&5D968@;7!L.CIM:6YU<SQR871?82QR871?8CXZ.G1Y<&4@<F%T7VUI
M;G5S.PT*(" @('-T9#HZ8V]U=" \/")R871?82 M(')A=%]B(#T@(B \/"!R
M871?;6EN=7,Z.FYU;65R871O<B \/"<O)PT*(" @(#P\(')A=%]M:6YU<SHZ
M9&5N;VUI;F%T;W(@/#PG7&XG.PT*#0H@(" @='EP961E9B!M<&PZ.FUU;'1I
M<&QI97,\<F%T7V$L<F%T7V(^.CIT>7!E(')A=%]M=6QT:7!L:65S.PT*(" @
M('-T9#HZ8V]U=" \/")R871?82 J(')A=%]B(#T@(B \/"!R871?;75L=&EP
M;&EE<SHZ;G5M97)A=&]R(#P\)R\G#0H@(" @/#P@<F%T7VUU;'1I<&QI97,Z
M.F1E;F]M:6YA=&]R(#P\)UQN)SL-"@T*(" @('1Y<&5D968@;7!L.CID:79I
M9&5S/')A=%]A+')A=%]B/CHZ='EP92!R871?9&EV:61E<SL-"B @("!S=&0Z
M.F-O=70@/#PB<F%T7V$@+R!R871?8B ]("(@/#P@<F%T7V1I=FED97,Z.FYU
M;65R871O<B \/"<O)PT*(" @(#P\(')A=%]D:79I9&5S.CID96YO;6EN871O
M<B \/"=<;B<[#0H-"B @("!T>7!E9&5F(&UP;#HZ;F5G871E/')A=%]A/CHZ
M='EP92!R871?;F5G7V$[#0H@(" @<W1D.CIC;W5T(#P\(BT@;F5G7V$@/2 B
M(#P\(')A=%]N96=?83HZ;G5M97)A=&]R(#P\)R\G#0H@(" @/#P@<F%T7VYE
M9U]A.CID96YO;6EN871O<B \/"=<;B<[#0H-"B-I9B P#0H@(" @+R\@8VAE
M8VL_at_9&EV(# -"B @(" @='EP961E9B!R871I;VYA;%]C/&EN="PT+# ^(')A
M=%]B860[#0H@(" @('-T9#HZ8V]U=" \/"!R871?8F%D.CID96YO;6EN871O
;<B \/"=<;B<[#0HC96YD:68@(" -"GT-"@T*
`
end


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk