In order for the compiler to inline a function call, it needs to have the full definition. If the function is not defined in the header file, the compiler only has the declaration and cannot inline the function even if it wanted to.
Therefore, I usually define short functions that I imagine the compiler might want to inline in header files.
With the whole-program optimization (/LTCG and /GL), is there no longer need for defining functions in header files to allow them to be inlined?
Are there other reasons to define functions in header files, except in some cases with templates?