Boost logo

Boost :

From: David B. Held (dheld_at_[hidden])
Date: 2002-07-05 16:48:56


I am trying to implement Andrei's OptionallyInherit class, but I have
gotten stuck on trying to provide conversion c'tors between
compatible types. The attached files should illustrate my problem.
gcc-3.0 (can't get 3.1 to compile on my system yet) reports no
matching c'tor for ptr2 and ptr3. However, ptr2 should have a
compatible conversion c'tor, while ptr3 should not. I assume this
code requires too much type analysis from the compiler. I'm not sure
if that makes what I'm trying to do impossible, or just much more
difficult. Any comments are appreciated.

Dave

begin 666 optimally_inherit.hpp
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"B\O($-O<'ER:6=H
M=" H0RD@,C P,BP_at_1&%V:60_at_0BX@2&5L9"X*+R\@"B\O($-O9&4@:6YS<&ER
M960_at_8GD@06YD<F5I($%L97AA;F1R97-C=2=S($]P=&EO;F%L;'E);FAE<FET
M('1E;7!L871E(&%S('=E;&P*+R\@87,@8F]O<W0Z.F-O;7!R97-S961?<&%I
M<BX*+R\@"B\O(%!E<FUI<W-I;VX@=&\@8V]P>2P@=7-E+"!M;V1I9GDL('-E
M;&PL(&%N9"!D:7-T<FEB=71E('1H:7,@<V]F='=A<F4@:7,*+R\@9W)A;G1E
M9"!P<F]V:61E9"!T:&ES(&-O<'ER:6=H="!N;W1I8V4_at_87!P96%R<R!I;B!A
M;&P_at_8V]P:65S+B!4:&ES('-O9G1W87)E"B\O(&ES('!R;W9I9&5D(")A<R!I
M<R(@=VET:&]U="!E>'!R97-S(&]R(&EM<&QI960@=V%R<F%N='DL(&%N9"!W
M:71H(&YO(&-L86EM"B\O(&%S('1O(&ET<R!S=6ET86)I;&ET>2!F;W(@86YY
M('!U<G!O<V4N"B\O( HO+R!3964@:'1T<#HO+W=W=RYB;V]S="YO<F<O(&9O
M<B!M;W-T(')E8V5N="!V97)S:6]N+"!I;F-L=61I;F<@9&]C=6UE;G1A=&EO
M;BX*+R\M+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+2TM"B\O"B\O(&]P
M=&EM86QL>5]I;FAE<FET+FAP< HO+R *+R\@;W!T:6UA;&QY7VEN:&5R:70\
M/B!H96QP<R!A=F]I9"!%0D\@<&5S<VEM:7IA=&EO;B!W:71H(&UU;'1I<&QE
M(&EN:&5R:71A;F-E"B\O(&)Y(&]N;'D@:6YH97)I=&EN9R!F<F]M(&YO;BUE
M;7!T>2!B87-E(&-L87-S97,N("!3964@"B\O(&QI8G,O<VUA<G1?<'1R+V]P
M=&EM86QL>5]I;FAE<FET+FAT;6P*+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"B-I9FYD968_at_0D]/4U1?3U!424U!3$Q97TE.2$52251?,C P
M,C W,#-?2%!0"B-D969I;F4_at_0D]/4U1?3U!424U!3$Q97TE.2$52251?,C P
M,C W,#-?2%!0"B\O+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+0HC
M:6YC;'5D92 \8F]O<W0O='EP95]T<F%I=',O;V)J96-T7W1R86ET<RYH<' ^
M"B\O+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+0IN86UE<W!A8V4@
M8F]O<W0*>PH@(" @+R\M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2T*(" @
M(&-L87-S('1R=65?="![('T["B @("!C;&%S<R!F86QS95]T('L@?3L*"B @
M("!T96UP;&%T92 \:6YT($-O;F0^"B @("!S=')U8W0_at_8F]O;#)T>7!E"B @
M("![('1Y<&5D968@=')U95]T('1Y<&4[('T["@H@(" @=&5M<&QA=&4@/#X*
M(" @('-T<G5C="!B;V]L,G1Y<&4\,#X*(" @('L@='EP961E9B!F86QS95]T
M('1Y<&4[('T["B @(" O+RTM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+0H@
M(" @;F%M97-P86-E(&1E=&%I; H@(" @>PH@(" @(" @("\O+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2T*(" @(" @(" O+R!#:&EL9"!I;7!L96UE;G1A=&EO
M;@H@(" @(" @('1E;7!L871E(#QC;&%S<R!4,2P_at_8VQA<W,@5#(L(&-L87-S
M($9I<G-T27-%;7!T>2P_at_8VQA<W,@4V5C;VYD27-%;7!T>3X*(" @(" @("!S
M=')U8W0@;W!T:6UA;%]P87)E;G1S.PH@(" @(" @("\O+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2T*(" @(" @(" O+R!);FAE<FET(&)O=&@*(" @(" @("!T
M96UP;&%T92 \8VQA<W,@5#$L(&-L87-S(%0R/@H@(" @(" @('-T<G5C="!O
M<'1I;6%L7W!A<F5N=',\5#$L(%0R+"!F86QS95]T+"!F86QS95]T/@H@(" @
M(" @(" @(" Z('!U8FQI8R!4,2P@<'5B;&EC(%0R"B @(" @(" @>PH@(" @
M(" @(" @("!O<'1I;6%L7W!A<F5N=',H=F]I9"D*(" @(" @(" @(" @>R!]
M"@H@(" @(" @(" @("!T96UP;&%T92 \8VQA<W,@53$L(&-L87-S(%4R/@H@
M(" @(" @(" @("!O<'1I;6%L7W!A<F5N=',H;W!T:6UA;%]P87)E;G1S/%4Q
M+"!5,BP_at_9F%L<V5?="P_at_9F%L<V5?=#X_at_8V]N<W0F(')H<RD*(" @(" @(" @
M(" @.B!5,2AR:',I+"!5,BAR:',I"B @(" @(" @(" @('L@?0H@(" @(" @
M('T["B @(" @(" @+R\M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+0H@(" @(" @
M("\O($EN:&5R:70_at_9FER<W0*(" @(" @("!T96UP;&%T92 \8VQA<W,@5#$L
M(&-L87-S(%0R/@H@(" @(" @('-T<G5C="!O<'1I;6%L7W!A<F5N=',\5#$L
M(%0R+"!F86QS95]T+"!T<G5E7W0^"B @(" @(" @(" @(#H@<'5B;&EC(%0Q
M"B @(" @(" @>PH@(" @(" @(" @("!O<'1I;6%L7W!A<F5N=',H=F]I9"D*
M(" @(" @(" @(" @>R!]"@H@(" @(" @(" @("!T96UP;&%T92 \8VQA<W,@
M53$L(&-L87-S(%4R/@H@(" @(" @(" @("!O<'1I;6%L7W!A<F5N=',H;W!T
M:6UA;%]P87)E;G1S/%4Q+"!5,BP_at_9F%L<V5?="P@=')U95]T/B!C;VYS="8@
M<FAS*0H@(" @(" @(" @(" Z(%4Q*')H<RD*(" @(" @(" @(" @>R!4,BA5
M,B_at_I*3L@?0H@(" @(" @(" @(" O+R!%;F9O<F-E(&-O;G9E<G-I;VX@<G5L
M97,*(" @(" @("!].PH@(" @(" @("\O+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2T*(" @(" @(" O+R!);FAE<FET('-E8V]N9 H@(" @(" @('1E;7!L871E
M(#QC;&%S<R!4,2P_at_8VQA<W,@5#(^"B @(" @(" @<W1R=6-T(&]P=&EM86Q?
M<&%R96YT<SQ4,2P_at_5#(L('1R=65?="P_at_9F%L<V5?=#X*(" @(" @(" @(" @
M.B!P=6)L:6,@5#(*(" @(" @("!["B @(" @(" @(" @(&]P=&EM86Q?<&%R
M96YT<RAV;VED*0H@(" @(" @(" @("![('T*"B @(" @(" @(" @('1E;7!L
M871E(#QC;&%S<R!5,2P_at_8VQA<W,@53(^"B @(" @(" @(" @(&]P=&EM86Q?
M<&%R96YT<RAO<'1I;6%L7W!A<F5N=',\53$L(%4R+"!T<G5E7W0L(&9A;'-E
M7W0^(&-O;G-T)B!R:',I"B @(" @(" @(" @(#H_at_53(H<FAS*0H@(" @(" @
M(" @("![(%0Q*%4Q*"DI.R!]"B @(" @(" @(" @("\O($5N9F]R8V4_at_8V]N
M=F5R<VEO;B!R=6QE<PH@(" @(" @('T["B @(" @(" @+R\M+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+0H@(" @(" @("\O($EN:&5R:70@;F5I=&AE<@H@(" @
M(" @('1E;7!L871E(#QC;&%S<R!4,2P_at_8VQA<W,@5#(^"B @(" @(" @<W1R
M=6-T(&]P=&EM86Q?<&%R96YT<SQ4,2P_at_5#(L('1R=65?="P@=')U95]T/@H@
M(" @(" @('L*(" @(" @(" @(" @;W!T:6UA;%]P87)E;G1S*'9O:60I"B @
M(" @(" @(" @('L@?0H*(" @(" @(" @(" @=&5M<&QA=&4@/&-L87-S(%4Q
M+"!C;&%S<R!5,CX*(" @(" @(" @(" @;W!T:6UA;%]P87)E;G1S*&]P=&EM
M86Q?<&%R96YT<SQ5,2P_at_53(L('1R=65?="P@=')U95]T/B!C;VYS="8@<FAS
M*0H@(" @(" @(" @("![(%0Q*%4Q*"DI.R!4,BA5,B_at_I*3L@?0H@(" @(" @
M(" @(" O+R!%;F9O<F-E(&-O;G9E<G-I;VX@<G5L97,*(" @(" @("!].PH@
M(" @(" @("\O+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2T*(" @('T@(" O+R!N
M86UE<W!A8V4_at_9&5T86EL"B @(" O+RTM+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+0H@(" @+R\@8VQA<W,@;W!T:6UA;&QY7VEN:&5R:70*(" @("\O+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM"B @("!T96UP;&%T92 \8VQA<W,@
M5#$L(&-L87-S(%0R/@H@(" @8VQA<W,@;W!T:6UA;&QY7VEN:&5R:70*(" @
M(" @(" Z('!U8FQI8R!D971A:6PZ.F]P=&EM86Q?<&%R96YT<SQ4,2P_at_5#(L
M"B @(" @(" @(" @(&)O;VPR='EP93QI<U]E;7!T>3Q4,3XZ.G9A;'5E/CHZ
M='EP92P*(" @(" @(" @(" @8F]O;#)T>7!E/&ES7V5M<'1Y/%0R/CHZ=F%L
M=64^.CIT>7!E"B @(" @(" @/@H@(" @>PH@(" @<')I=F%T93H*(" @(" @
M("!T>7!E9&5F(&1E=&%I;#HZ;W!T:6UA;%]P87)E;G1S/%0Q+"!4,BP*(" @
M(" @(" @(" @8F]O;#)T>7!E/&ES7V5M<'1Y/%0Q/CHZ=F%L=64^.CIT>7!E
M+ H@(" @(" @(" @("!B;V]L,G1Y<&4\:7-?96UP='D\5#(^.CIV86QU93XZ
M.G1Y<&4*(" @(" @(" ^(&)A<V5?='EP93L*(" @('!U8FQI8SH*(" @(" @
M("!O<'1I;6%L;'E?:6YH97)I="AV;VED*0H@(" @(" @('L@?0H*(" @(" @
M("!T96UP;&%T92 \8VQA<W,@53$L(&-L87-S(%4R/@H@(" @(" @(&]P=&EM
M86QL>5]I;FAE<FET*&]P=&EM86QL>5]I;FAE<FET/%4Q+"!5,CX_at_8V]N<W0F
M(')H<RD*(" @(" @(" @(" @.B!B87-E7W1Y<&4H<FAS*0H@(" @(" @('L@
M?0H@(" @?3L*(" @("\O+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM"GT@
M(" O+R!N86UE<W!A8V4_at_8F]O<W0*+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"B-E;F1I9B O+R!"3T]35%]/4%1)34%,3%E?24Y(15))5%\R
,,# R,#<P,U](4% *
`
end

begin 666 opt_test.cpp
M(VEN8VQU9&4@(F]P=&EM86QL>5]I;FAE<FET+FAP<"(*(VEN8VQU9&4@/'-T
M<FEN9SX*(VEN8VQU9&4@/&EO<W1R96%M/@H*8VQA<W,@4#$*>PH@(" @:6YT
M('@["G!U8FQI8SH*?3L*"F-L87-S(% R80I["G!U8FQI8SH*(" @(% R82_at_I
M('L@?0H@(" @4#)A*% R82!C;VYS="8I('L@?3L*?3L*8VQA<W,@4#)B"GL*
M<'5B;&EC._at_H@(" @4#)B*"D@>R!]"B @("!0,F(H4#)B(&-O;G-T)BD@>R!]
M.PH@(" @4#)B*% R82!C;VYS="8I('L@?3L*?3L*"F-L87-S(% S('L@?3L*
M8VQA<W,@4#0@>R!].PH*=&5M<&QA=&4@/&-L87-S(%0Q+"!C;&%S<R!4,BP@
M8VQA<W,@5#,L(&-L87-S(%0T/@IC;&%S<R!S;6%R=%]P='(*(" @(#H@<'5B
M;&EC(&)O;W-T.CIO<'1I;6%L;'E?:6YH97)I=#P*(" @(" @("!B;V]S=#HZ
M;W!T:6UA;&QY7VEN:&5R:70\5#$L(%0R/BP*(" @(" @("!B;V]S=#HZ;W!T
M:6UA;&QY7VEN:&5R:70\5#,L(%0T/@H@(" @/@I["G!U8FQI8SH*(" @('-M
M87)T7W!T<B_at_I('L@?0H*(" @('1E;7!L871E(#QC;&%S<R!5,2P_at_8VQA<W,@
M53(L(&-L87-S(%4S+"!C;&%S<R!5-#X*(" @('-M87)T7W!T<BAS;6%R=%]P
M='(\53$L(%4R+"!5,RP_at_530^(&-O;G-T)B!R:',I"B @(" @(" @.B!B;V]S
M=#HZ;W!T:6UA;&QY7VEN:&5R:70\"B @(" @(" @(" @(&)O;W-T.CIO<'1I
M;6%L;'E?:6YH97)I=#Q4,2P_at_5#(^+ H@(" @(" @(" @("!B;V]S=#HZ;W!T
M:6UA;&QY7VEN:&5R:70\5#,L(%0T/@H@(" @(" @(#XH<FAS*0H@(" @>R!]
M"GT["@II;G0@;6%I;B_at_I"GL*(" @('-M87)T7W!T<CQ0,2P_at_4#)A+"!0,RP@
M4#0^('!T<C$["B @("!S;6%R=%]P='(\4#$L(% R8BP_at_4#,L(% T/B!P='(R
M*'!T<C$I.PH@(" @<VUA<G1?<'1R/% Q+"!0,F$L(% S+"!0-#X@<'1R,RAP
M='(R*3L*"B @("!S=&0Z.F-O=70@/#P@<VEZ96]F*'!T<C$I(#P\('-T9#HZ
M96YD;#L*"B @("!S=&0Z.G-T<FEN9R!S.PH@(" @<W1D.CIG971L:6YE*'-T
.9#HZ8VEN+"!S*3L*?0H`
`
end


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