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