Class Grammar

class → attributes? specifiers class identifier template‑parameter‑list? inheritance‑and‑interfaces? where‑constraint? { class‑content }
inheritance‑and‑interfaces → : base‑class‑or‑interface % ,
base‑class‑or‑interface → template‑id | qualified‑id
class‑content → class‑member*
class‑member → static‑constructor | constructor | destructor | member‑function | conversion‑function | member‑variable | typedef | class | enum‑type | constant | delegate | class‑delegate
static‑constructor → attributes? specifiers identifier ( ) (: (initializer % ,))? where‑constraint? (compound‑statement | ;)
constructor → attributes? specifiers identifier parameter‑list (: (initializer % ,))? where‑constraint? (compound‑statement | ;)
destructor → attributes? specifiers ~ identifier ( ) where‑constraint? (compound‑statement | ;)
initializer → this ( argument‑list ) | base ( argument‑list ) | identifier ( argument‑list )
member‑function → attributes? specifiers type‑expr function‑group‑id parameter‑list const? where‑constraint? (compound‑statement | ;)
conversion‑function → attributes? specifiers operator type‑expr ( ) const? where‑constraint? (compound‑statement | ;)
member‑variable → attributes? specifiers type‑expr identifier ;