Annex C (informative) Compatibility [diff]

C.5 C++ and ISO C++ 2017 [diff.cpp17]

C.5.1 [lex]: lexical conventions [diff.cpp17.lex]

Affected subclause: [lex.key]
Change: New keywords.

Rationale: Required for new features.
The requires keyword is added to introduce constraints through a requires-clause or a requires-expression.
The concept keyword is added to enable the definition of concepts ([temp.concept]).

Effect on original feature: Valid ISO C++ 2017 code using concept or requires as an identifier is not valid in this International Standard.
Affected subclause: [lex.operators]
Change: New operator <=>.

Rationale: Necessary for new functionality.

Effect on original feature: Valid C++ 2017 code that contains a <= token immediately followed by a > token may be ill-formed or have different semantics in this International Standard:
namespace N {
  struct X {};
  bool operator<=(X, X);
  template<bool(X, X)> struct Y {};
  Y<operator<=> y;              // ill-formed; previously well-formed