This library looks really great. Eager to try it.
To wit, I just did a git clone / cmake / make and I got the following (rather inscrutable) compiler error
make
[ 4%] Building CXX object CMakeFiles/ponder.dir/src/args.cpp.o
[ 8%] Building CXX object CMakeFiles/ponder.dir/src/arrayproperty.cpp.o
[ 12%] Building CXX object CMakeFiles/ponder.dir/src/class.cpp.o
[ 16%] Building CXX object CMakeFiles/ponder.dir/src/classcast.cpp.o
[ 20%] Building CXX object CMakeFiles/ponder.dir/src/classmanager.cpp.o
[ 24%] Building CXX object CMakeFiles/ponder.dir/src/classvisitor.cpp.o
[ 28%] Building CXX object CMakeFiles/ponder.dir/src/enum.cpp.o
[ 32%] Building CXX object CMakeFiles/ponder.dir/src/enumbuilder.cpp.o
In file included from /home/david/ponder/include/ponder/enum.hpp:41:0,
from /home/david/ponder/src/enumbuilder.cpp:32:
/home/david/ponder/include/ponder/detail/dictionary.hpp: In instantiation of ‘void ponder::detail::Dictionary<KEY, VALUE, CMP>::erase(const KEY&) [with KEY = std::basic_string<char>; VALUE = long int; CMP = ponder::Enum::EnumCmp]’:
/home/david/ponder/include/ponder/detail/dictionary.hpp:110:18: required from ‘void ponder::detail::Dictionary<KEY, VALUE, CMP>::insert(const KEY&, const VALUE&) [with KEY = std::basic_string<char>; VALUE = long int; CMP = ponder::Enum::EnumCmp]’
/home/david/ponder/src/enumbuilder.cpp:48:41: required from here
/home/david/ponder/include/ponder/detail/dictionary.hpp:123:13: error: no matching function for call to ‘std::vector<std::pair<std::basic_string<char>, long int>, std::allocator<std::pair<std::basic_string<char>, long int> > >::erase(__gnu_cxx::__normal_iterator<const std::pair<std::basic_string<char>, long int>*, std::vector<std::pair<std::basic_string<char>, long int>, std::allocator<std::pair<std::basic_string<char>, long int> > > >&)’
m_contents.erase(it);
^
/home/david/ponder/include/ponder/detail/dictionary.hpp:123:13: note: candidates are:
In file included from /usr/include/c++/4.8/vector:69:0,
from /usr/include/c++/4.8/bits/random.h:34,
from /usr/include/c++/4.8/random:50,
from /usr/include/c++/4.8/bits/stl_algo.h:65,
from /usr/include/c++/4.8/algorithm:62,
from /home/david/ponder/include/ponder/format.h:39,
from /home/david/ponder/include/ponder/detail/util.hpp:37,
from /home/david/ponder/include/ponder/error.hpp:38,
from /home/david/ponder/include/ponder/enumget.hpp:37,
from /home/david/ponder/include/ponder/enum.hpp:39,
from /home/david/ponder/src/enumbuilder.cpp:32:
/usr/include/c++/4.8/bits/vector.tcc:134:5: note: std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::erase(std::vector<_Tp, _Alloc>::iterator) [with _Tp = std::pair<std::basic_string<char>, long int>; _Alloc = std::allocator<std::pair<std::basic_string<char>, long int> >; std::vector<_Tp, _Alloc>::iterator = __gnu_cxx::__normal_iterator<std::pair<std::basic_string<char>, long int>*, std::vector<std::pair<std::basic_string<char>, long int>, std::allocator<std::pair<std::basic_string<char>, long int> > > >; typename std::_Vector_base<_Tp, _Alloc>::pointer = std::pair<std::basic_string<char>, long int>*]
vector<_Tp, _Alloc>::
^
/usr/include/c++/4.8/bits/vector.tcc:134:5: note: no known conversion for argument 1 from ‘__gnu_cxx::__normal_iterator<const std::pair<std::basic_string<char>, long int>*, std::vector<std::pair<std::basic_string<char>, long int>, std::allocator<std::pair<std::basic_string<char>, long int> > > >’ to ‘std::vector<std::pair<std::basic_string<char>, long int>, std::allocator<std::pair<std::basic_string<char>, long int> > >::iterator {aka __gnu_cxx::__normal_iterator<std::pair<std::basic_string<char>, long int>*, std::vector<std::pair<std::basic_string<char>, long int>, std::allocator<std::pair<std::basic_string<char>, long int> > > >}’
/usr/include/c++/4.8/bits/vector.tcc:146:5: note: std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::erase(std::vector<_Tp, _Alloc>::iterator, std::vector<_Tp, _Alloc>::iterator) [with _Tp = std::pair<std::basic_string<char>, long int>; _Alloc = std::allocator<std::pair<std::basic_string<char>, long int> >; std::vector<_Tp, _Alloc>::iterator = __gnu_cxx::__normal_iterator<std::pair<std::basic_string<char>, long int>*, std::vector<std::pair<std::basic_string<char>, long int>, std::allocator<std::pair<std::basic_string<char>, long int> > > >; typename std::_Vector_base<_Tp, _Alloc>::pointer = std::pair<std::basic_string<char>, long int>*]
vector<_Tp, _Alloc>::
^
/usr/include/c++/4.8/bits/vector.tcc:146:5: note: candidate expects 2 arguments, 1 provided
make[2]: *** [CMakeFiles/ponder.dir/src/enumbuilder.cpp.o] Error 1
make[1]: *** [CMakeFiles/ponder.dir/all] Error 2
make: *** [all] Error 2