"Angus Leeming" wrote in message
news:ch7h3d$466$1@sea.gmane.org...
I'm trying to ascertain whether a given class is, or is derived from,
std::basic_ostream, but I've ground to a halt.
I've attached a somewhat improved version inspired by your attempt. (Thanks!) It
only works on compilers which support has_xxx, but it should handle the case of
private inheritance now, by delegating to is_base_and_derived.
Note that with the current cvs it should not be necessary to write
mpl::and_< mpl::bool_, ...
You can simply say
mpl::and_< has_char_type<U>, ...
Best Regards,
Jonathan
begin 666 ios_traits.hpp
M+R\@*$,I($-O<'ER:6=H="!*;VYA=&AA;B!4=7)K86YI6EN9PT*+R\@9FEL92!,24-%
M3E-%7S%?,"YT>'0@;W(@8V]P>2!A="!H='1P.B\O=W=W+F)O;W-T+F]R9R],
M24-%3E-%7S%?,"YT>'0N*0T*#0HC:69N9&5F($)/3U-47TE/7TE/4U]44D%)
M5%-?2%!07TE.0TQ51$5$#0HC9&5F:6YE($)/3U-47TE/7TE/4U]44D%)5%-?
M2%!07TE.0TQ51$5$(" @(" @( T*( T*(VEN8VQU9&4@/&ET97)A=&]R/B @
M(" @(" @(" @(" @(" @(" @(" @(" @(" O+R!B86-K7VEN%\O:&%S7WAX>"YH<' ^(" @
M(" @(" @(" @(" @#0HC:6YC;'5D92 \8F]O%\O;&%M8F1A
M7W-U<'!O7!E7W1R86ET7!E7W1R86ET
M7!E+FAP<#X@(" @( T*#0HO
M+R -"B\O($UA8W)O(&YA;64Z($)/3U-47TE/7T)/3TQ?5%)!251?1$5HO
M+R!$97-CR @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @7 T*(" @(" @(" @("!"3T]35%]35$%424-?0T].4U1!3E0H8F]O;"P@
M=F%L=64@/2 @(" @(" @(" @(" @(" @(" @(" @(" @(" @(%P-"B @(" @
M(" @(" @(" @("AS:7IE;V8H0D]/4U1?4%!?0T%4*'1R86ET+"!?:&5L<&5R
M*2AS=&%T:6-?8V%S=#Q4*CXH,"DI*2 ]/2!<#0H@(" @(" @(" @(" @(" @
MR!"3T]35%]-4$Q?05587TQ!34)$05]355!03U)4*#$L
M('1R86ET+" H5"DI('T[(" @(" @(" @(" @(" @(" @(" @(" @7 T*(" @
M('T@?2 @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(%P-"B @(" O*BHO#0H-"FYA
M;65S<&%C92!B;V]S="![(&YA;65S<&%C92!I;R![(&YA;65S<&%C92!D971A
M:6P@>PT*#0I"3T]35%]-4$Q?2$%37UA86%]44D%)5%].04U%1%]$148H:&%S
M7V-H87)?='EP92P@8VAA7!E+"!T7!E;F%M92!5.CIC:&%R7W1Y<&4@(" @
M(" @(" @(" @(" @(" @(&-H87)?='EP93L@("!<#0H@(" @(" @(" @(" @
M('1Y<&5D968@='EP96YA;64@53HZ=')A:71S7W1Y<&4@(" @(" @(" @(" @
M(" @("!T7!E9&5F(&UP
M;#HZ;W)?/" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(%P-"B @(" @(" @(" @(" @(" @(" @(" @(" @:7-?7!E9&5F(&UP;#HZ86YD7SP@(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @("!<#0H@(" @(" @(" @
M(" @(" @(" @(" @(&UP;#HZ8F]O;%\\:&%S7V-H87)?='EP93Q4/CHZ=F%L
M=64^+" @(" @(" @(" @(" @(" @7 T*(" @(" @(" @(" @(" @(" @(" @
M("!M<&PZ.F)O;VQ?/&AA7!E.R @(" @(" @7 T*(" @(" @(" @
M($)/3U-47U-4051)0U]#3TY35$%.5"AB;V]L+"!V86QU92 ]('1Y<&4Z.G9A
M;'5E*3L@(" @(" @(" @(" @(" @(%P-"B @(" @('T[(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @("!<#0H@(" @?2 @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M7 T*(" @('1E;7!L871E/'1Y<&5N86UE(%0^(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(%P-"B @("!S=')U
M8W0@=')A:70@(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @("!<#0H@(" @(" @(#H@;7!L.CIB;V]L
M7SQD971A:6PZ.D)/3U-47U!07T-!5"AT2!F
MF%T:6]N(&]F(&)A7!E('=I
M;&P@8V%U