Cosmetic changes
Use variadic templates and forwarding references for better flexibility
Use default member initializers for constant initial values
Mark empty constructors and destructors as defaulted
Use nullptr instead of 0 for pointers
Use metaprogramming constructs from std
Require C++11 for building
Minor style/typo fixes
Make Loader::ActionMap delete the actions This ensures actions in shared action maps are deleted as well
Implement proper copy semantics All classes are now either safe to copy or are marked noncopyable.
Support custom action maps in loader classes This makes it possible to implement a persistent action map which is only initialized once the first time a particular class is used.
Support loader functions with bound first argument This allows more flexibility in defining dynamic keywords. Only available with C++11.
Support N-ary loader functions if compiling in C++11 mode
Prefer vector over list
Throw an exception if trying to load a nonexistent file Collection::open_raw returns a null pointer in this case so it must be checked.
Add more flexible versions of the load function Firstly there's a variadic version of the basic load function. Secondly and perhaps more importantly there are versions which can load an object from a file stored in a collection. All of these are only implemented for C++11 for now, since supporting the old version seems increasingly irrelevant.
Provide access to the keyword of the current statement
More efficient way of loading binary files The Variant array for storing arguments in Statement is too slow. Bypass it by passing args directly to the action in a sort of ad-hoc struct.
Use a common StatementKey structure for Loader and BinaryParser/Writer
Consider full statement signature when dealing with auxiliary loaders