//zero // one // two // three void foo(void); struct A { public: long_complicated_type f(); A& operator+(const A& other); }; A& A::operator+(const A& other) {} B operator+(const B& other) {} B foo(const B& other) {} class A { public: explicit A(int); int aFunct() { return a; } int bFunc(); }; // Another file int A::bFunc() { // some code } template typename Foo::Type Foo::Func() { } void Foo::bar() {} namespace foo { Foo::Foo() {} } Foo::~Foo() {} class Object { ~Object(void); }; template void SampleClassTemplate::connect() { } template <> inline void bar(MyType r) { foo(r); } template inline void baz<>(T r) { foo(r); }