This exposes several issues with the current generation that this revision also fixes.
- TypeDef now allows specifying the base class to use when generating.
- TypeDef now inherits from DialectType, which allows for using it as a TypeConstraint
- Parser/Printers are now no longer generated in the header(removing duplicate symbols), and are now only generated when necessary.
- Now that generatedTypeParser/Printer are only generated in the definition file, existing users will need to manually expose this functionality when necessary.
- ::get() is no longer generated for singleton types, because it isn't necessary.
I think there should be a :: before the dialect.cppNamespace.