If one takes a look at the goals and features section it soon becomes obvious that these goals cannot be achieved using trivial C++ features only.
We make heavy use of templates, (partial) template specialization, generative and generic programming, and the STL. This may be a challenge for you as well as for your compiler, as these are quite late features of the C++ language.
While knowledge of generative programming is only necessary if you want to create your own mesh kernels or extend iterators or similar types, you will NOT need it for simply using these things. Nevertheless working knowledge of C++ and basic knowlege of templates is required. To get into this stuff we recommend the following books: