complicated Typedef in C++
<p>I understand that typedef can be used to define a new custom type, for example:</p>

<pre><code>// simple typedef
typedef unsigned long ulong;

// the following two objects have the same type 
unsigned long l1;
ulong l2;
</code></pre>

<p>I recently came across this typedef, and got lost in deciphering what is going on in the declaration:</p>

<pre><code>typedef int16_t CALL_CONVENTION(* product_init_t)(product_descript_t *const description)
</code></pre>

<p>Can someone guide me and explain what this is doing? </p>

<p>EDIT: changed NEW_TYPE to CALL_CONVENTION. It's a define. Thanks for spotting that out. </p>