Comment at least each class and each public and protected member of a class.
Comment also every argument in a function.
Overridden functions need not be documented again, but indicate where the orginial function comes from (e.g., public cppexpose::Object interface).
Use active form for descriptions, do not use third person (e.g., ‘Get list of functions’, not: ‘Returns list of functions’).
Always indicate whether pointers can be null or not.
Always indicate the value range and/or units of arguments, return values and variables (e.g., ‘Delay in seconds’, not just ‘Delay’).
Add explanations and word definitions whenever necessary to clarify the overall software architecture. For example, a comment like ‘Get glyph decorator’ does not help much if it is unclear what a glyph decorator does exactly. So, explain it in the description of the class!