
// 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:
int aFunct() {
	return a;
}
int bFunc();
};

// Another file
int A::bFunc()
{
// some code
}

template<typename T>
typename Foo<T>::Type Foo<T>::Func()
{
}

void Foo::bar() {
}

namespace foo {
Foo::Foo() {
}
}

Foo::~Foo() {
}

class Object
{
~Object(void);
};

template <class T>
void SampleClassTemplate<T>::connect()
{
}

template <>
inline void bar<MyType>(MyType r)
{
	foo(r);
}

template <T>
inline void baz<>(T r)
{
	foo(r);
}
