$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Rani Sharoni (rani_sharoni_at_[hidden])
Date: 2003-01-30 08:25:13
"Terje Slettebø" <tslettebo_at_[hidden]> wrote in message
news:05e001c2c7b8$ebb14b50$cb6c6f50_at_pc...
>
> template<typename B, typename D>
> struct helper
> {
> template<typename T>
> static char check(D const volatile &, T);
> static char (& check(B const volatile &, int))[2];
>
> struct C
> {
> operator B const volatile &() const;
> operator D const volatile &();
> };
>
> static C getC();
> };
>
> template<typename B, typename D>
> struct is_base_and_derived
> {
> static const bool result =
> sizeof(helper<B,D>::check(helper<B,D>::getC(), 0)) == 1;
> };
>
> // If strict interpretation, i.e. not its own base class
>
> template<typename T>
> struct is_base_and_derived<T, T>
> {
> static const bool result = false;
> };
>
Ironically this specialization has the same behavior as the primary
template.
Rani