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