Skip to content

Standards Wording Idioms

sdutoit edited this page Nov 7, 2011 · 8 revisions

This is a list of some common idioms in the standard that should be used to specify certain cases, and corresponding anti-idioms that should not be used.

When you are writing proposals for changes to the C++ standard, please try to follow these idioms. If you notice an anti-idiom in the current C++ standards draft, please [submit an editorial issue](How to submit an editorial issue).

Case Idiom(s) Anti-idiom(s) Example
Normative requirement
Use this idiom when specifying something we require a conforming implementation to do.
  • Implementations shall […]
  • <language feature X> shall […]
  • […] must […]

"Unless it is a bit-field, a most derived object shall have a non-zero size"
Normative encouragement
Use this idiom when specifying something we would prefer, but do not require, implementations to do.
  • Implementations should […]
  • Implementations are encouraged, but not required, to […]
"Implementations should ensure that all unblocked threads eventually make progress"
Complicated conditional cases
Use this idiom when you are enumerating a set of possibilities, and stating requirements under those possibilities.
  • If […], then […].
    If […], then […].

    Otherwise […]
  • […], except when […], then […], or when […], then […]
"If E1 is an lvalue, then E1.E2 is an lvalue; if E1 is an xvalue, then E1.E2 is an xvalue; otherwise, it is a prvalue."

Missing idioms

  • Variations on "ill-formed"
Clone this wiki locally