Question: I often see the following function declaration:

```
some_func(const unsigned char * const buffer)
{

}

```

Any idea why the const is repeated before the pointer name?

Thanks.

Answer: 
type declarations should(?) be read RTL. `const` modifies the thing on its left, but the rule is complicated by the fact that you can write both `const T` and `T const` (they mean the same thing).

* `T * const` is a *constant pointer to mutable T*
* `T & const` would be *constant reference to mutable T*, except references are constant by definition
* `T const *` is a *mutable pointer to constant T*
* `T const &` is a *reference to constant T*
* `T const * const` is *constant pointer to constant T*
A couple of articles to help you understand const correctness in C++: 

* [Wikipedia](http://en.wikipedia.org/wiki/Const-correctness)
* [Possibility.com](http://www.possibility.com/Cpp/const.html)