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
cpptype
return aCppTypeFactory
object which is used to instantiate class templates, and apply const and ref qualifications - Introduce the convenience subblass
CppClass
ofAugExpr
to 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
cpptype
method from the composer, to avoid confusion about its name
Documentation
- Add a user guide section on
cpptype
and API reflection usingCppClass
- Add
myst-nb
as the MyST markdown engine in order to parse and execute Jupyter and text-based notebooks