The typical way of writing C++ code is to seperate it in header and (non-header) source files.
I saw a lot of modern C++ libraries that are header-only (e.g. some Boost libraries). Typically these libraries make a lot of use of templates.
Instead of seperating their files into header and source files, they seperate their files into header declarations and header implementations.
So my questions are:
- Is it just the old fashion way to use source files? 
- When does it make sense to use source files at all? 
- What are the pros and cons for creating a header-only library? 
 
     
    