www.digitalmars.com         C & C++   DMDScript  

c++.beta - Boolean conversions

struct A
{
  typedef void (A::*member)() const;

  operator member() const
  {
    return &A::f;
  }

  void f() const;
};

int main()
{
  A a;

  bool b = a;
  // Error: need explicit cast to convert
  // from: A
  // to  : bool
  if (a)
  // Error: undefined use of struct or union
  {
    return 0;
  }

  return 1;
}


Extracted from Boost's scoped_ptr. I guess the compiler should use the
user-defined conversion function and then a standard conversion from pointer
to member to bool (see 4.12 Boolean conversions [conv.bool]).


bye, Christof

-- 
http://cmeerw.org                                 JID: cmeerw jabber.at
mailto cmeerw at web.de

...and what have you contributed to the Net?
Jun 08 2003