EDIT: Thinking about it, I'm having doubt about my statement (that inlined function don't have to be in headers)... I'd have to verify that. After all, I'm only learning C++... But it still doesn't change the fact that optimization should be targeted at measured bottlenecks.
Inlined functions must be in header files, at least for almost all current compilers, as they compile per compilation unit (.c/.o).
Compilers with whole-program-optimization (such as clang/llvm)
could inline functions over compilation unit boundaries. Inlining and optimization would happen in the linker.
You cannot assume that though...