bool foo(int& idx)
{
   if (idx < m_count)
   {
      idx++;
      return(m_bool[idx - 1]);
   }
   return(false);
}

class Foo {
 public:
   Foo();
   Foo(const Foo& f);
};

class NS::Foo {
 public:
   Foo(Bar& b);
};

template<class T> class ListManager
{
 protected:
   T head;

 public:
   ListManager()
   {
      head.next = head.prev = &head;
   }

   ListManager(const ListManager& ref)
   {
      head.next = head.prev = &head;
   }
}

const Foo& Foo::operator ==(Foo& me)
{
   ::sockaddr *ptr = (::sockaddr *)&host;

   return(me);
}

MyType& MyClass::myMethode()
{
   const MyType& t = getSomewhere();
}
