Style.

 - pragma once is replaced by header guards.
Code style strikes back.
Drop unused typedefs.
Refactoring over exception superclass.

 - less macro, more templates
Style.
Now indexed error can test if it has specified tag.