next up previous
suivant: Declarators monter: Grammaire de C++ précédent: Statements

Declarations


declaration-seq:  

declaration
declaration-seq declaration
declaration:
block-declaration
function-definition
template-declaration
explicit-instantiation
explicit-specialization
linkage-specification
namespace-definition
block-declaration:
simple-declaration
asm-definition
namespace-alias-definition
using-declaration
using-directive
simple-declaration:
decl-specifier-seq$_{\mathsf{opt}}$ init-declarator-list$_{\mathsf{opt}}$ ;

decl-specifier:
storage-class-specifier
type-specifier
function-specifier
friend
typedef
decl-specifier-seq:
decl-specifier-seq$_{\mathsf{opt}}$ decl-specifier
storage-class-specifier:
auto
register
static
extern
mutable
function-specifier:
inline
virtual
explicit
typedef-name:
identifier
type-specifier:
simple-type-specifier
class-specifier
enum-specifier
elaborated-type-specifier
cv-qualifier
simple-type-specifier:
::$_{\mathsf{opt}}$ nested-name-specifier$_{\mathsf{opt}}$ type-name
char
wchar_t
bool
short
int
long
signed
unsigned
float
double
void
type-name:
class-name
enum-name
typedef-name
elaborated-type-specifier:
class-key ::$_{\mathsf{opt}}$ nested-name-specifier$_{\mathsf{opt}}$ identifier
enum ::$_{\mathsf{opt}}$ nested-name-specifier$_{\mathsf{opt}}$ identifier
typename ::$_{\mathsf{opt}}$ nested-name-specifier identifier
typename ::$_{\mathsf{opt}}$ nested-name-specifier identifier < template-argument-list >enum-name:
identifier
enum-specifier:
enum identifier$_{\mathsf{opt}}$ { enumerator-list$_{\mathsf{opt}}$ }

enumerator-list:
enumerator-definition
enumerator-list , enumerator-definition
enumerator-definition:
enumerator
enumerator = constant-expression
enumerator:
identifier
namespace-name:
original-namespace-name
namespace-alias
original-namespace-name:
identifier

namespace-definition:
named-namespace-definition
unnamed-namespace-definition

named-namespace-definition:
original-namespace-definition
extension-namespace-definition

original-namespace-definition:
namespace identifier { namespace-body }

extension-namespace-definition:
namespace original-namespace-name { namespace-body }

unnamed-namespace-definition:
namespace { namespace-body }

namespace-body:
declaration-seq$_{\mathsf{opt}}$
namespace-alias:
identifier

namespace-alias-definition:
namespace identifier = qualified-namespace-specifier ;

qualified-namespace-specifier:
::$_{\mathsf{opt}}$ nested-name-specifier$_{\mathsf{opt}}$ namespace-name
using-declaration:
using typename$_{\mathsf{opt}}$ ::$_{\mathsf{opt}}$ nested-name-specifier unqualified-id ;
using :: unqualified-id ;
using-directive:
using namespace ::$_{\mathsf{opt}}$ nested-name-specifier$_{\mathsf{opt}}$ namespace-name ;
asm-definition:
asm ( string-literal ) ;
linkage-specification:
extern string-literal { declaration-seq$_{\mathsf{opt}}$ }
extern string-literal declaration


next up previous
suivant: Declarators monter: Grammaire de C++ précédent: Statements
R Lalement
1999-09-16