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