9 Statements [stmt.stmt]

9.1 Labeled statement [stmt.label]

A statement can be labeled.
labeled-statement:
	attribute-specifier-seq identifier : statement
	attribute-specifier-seq case constant-expression : statement
	attribute-specifier-seq default : statement
The optional attribute-specifier-seq appertains to the label.
An identifier label declares the identifier.
The only use of an identifier label is as the target of a goto.
The scope of a label is the function in which it appears.
Labels shall not be redeclared within a function.
A label can be used in a goto statement before its declaration.
Labels have their own name space and do not interfere with other identifiers.
[Note
:
A label may have the same name as another declaration in the same scope or a template-parameter from an enclosing scope.
end note
]
Case labels and default labels shall occur only in switch statements.