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
;