lrodrig wrote:...Sorry for my poor explanation...
I assumed you know this

- I only wanted to make you aware that you were searching at the wrong place.
Usually one uses declarations to speed-up the compiled code at run-time, not to speed-up the compiling of the code. There may be exceptions, if parts of the the code are intended to compile at run-time, e.g. using Lisp for compiling an "embedded" programming language, but that's a very special case.
Macro-expansion happens at compile-time. During macro-expansion types don't matter much because the compiler compiles the expanded macro code, not the macro definition. This means that for
run-time speed it's only important that in the
expanded macro code all type declarations are at the correct places.
- edgar