Que yo sepa, typedef sirve para asignar un alias a unas palabras en concreto, por ejemplo:
Código C++:
Ver originaltypedef unsigned long int US; /* A partir de ahora, cada vez que escribas US se entenderá como un unsigned long int*/
Además, que yo sepa en C si que era necesario poner struct Moneda m; para crear una nueva "Moneda", pero en C++ con poner Moneda m; te vale xD