# Foo namespace
#include <File.h>

A namespace.

### Contents

- Reference
  - Functions

## Functions

template<class T>
auto foo(int a, std::string b, char(&things)[5], bool, char(&)[42], int stuff[], double[1337]) -> int
  Function with everything
void bar(int in, int& out, void* shit) constexpr noexcept
  Input and output.
auto justReturn() -> int
  Function.
auto justReturnValues() -> int
  Function.
auto justExceptions() -> int
  Function.
template<class A, class B>
auto bar(int a, int b) -> int
  A function with scattered docs.
void thisIsAShittyWayToPassAVectorButWhatever(float x, float y, float z)
  Function with one description for all params.

## Function documentation

###
template<class T>
int Foo::foo(int a, std::string b, char(&things)[5], bool, char(&)[42], int stuff[], double[1337])

Function with everything

Template parameters
T | A template, innit
Parameters
a | That's a for you
b | Well, a string
things | And an array!
stuff | Another array
Returns | It returns!
0 | Zero?
42 | The Answer.

Ooooh, more text!

### void Foo::bar(int in, int& out, void* shit) constexpr noexcept

Input and output.

Parameters
in in | Input
out out | Output
shit in/out | Well, that's messy

### int Foo::justReturn()

Function.

Returns | With just return value docs should still have detailed section

### int Foo::justReturnValues()

Function.

Returns
42 | With just return value docs should still have detailed section

### int Foo::justExceptions()

Function.

Exceptions
std::bad_exception | With just exception docs should still have detailed section

###
template<class A, class B>
int Foo::bar(int a, int b)

A function with scattered docs.

Template parameters
A | First template parameter docs
B | Second template parameter docs
Parameters
a | First parameter docs
b | Second parameter docs
Returns
0 | Zero
1337 | 1337 h4xx0r?!
42 | The answer. To everything
Exceptions
std::bad_function_call | if you call the function bad
std::future_error | if you are from the future

This is a function that has the docs all scattered around. They should get merged and reordered.

That goes also for the return values.

Yes?

- We also need to
- extract them out of a list

### void Foo::thisIsAShittyWayToPassAVectorButWhatever(float x, float y, float z)

Function with one description for all params.

Parameters
x | Coordinates in 3D space
y | Coordinates in 3D space
z | Coordinates in 3D space