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 ;