Improve versatility and robustness of `cpptype`, and document it in the user guide
This MR improves the implementation and interface of cpptype, adds a number of tests, extends the STL API reflections using it, and introduces a user guide section on API reflection.
lang.cpptype
- Fix correct cloning of
CppType, as required for(de)constify, by keeping and passing on the raw template parameters - Customize the template formatter to reject superfluous template arguments
- Have
cpptypereturn aCppTypeFactoryobject which is used to instantiate class templates, and apply const and ref qualifications - Introduce the convenience subblass
CppClassofAugExprto simplify the definition of API reflections for C++ classes
lang.cpp.std
- Update reflections of C++ STL classes to use the new features of
cpptype
Composer
- Remove the undocumented
cpptypemethod from the composer, to avoid confusion about its name
Documentation
- Add a user guide section on
cpptypeand API reflection usingCppClass - Add
myst-nbas the MyST markdown engine in order to parse and execute Jupyter and text-based notebooks