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();
}
