Enable more C++ warnings
Allow changing 'class' keyword
Define iterator_traits as struct, not class

Clang warning