[diff.cpp23.lex] # Annex C (informative) Compatibility [[diff]](./#diff) ## C.1 C++ and ISO C++ 2023 [[diff.cpp23]](diff.cpp23#lex) ### C.1.2 [[lex]](lex "5 Lexical conventions"): lexical conventions [diff.cpp23.lex] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L16) **Affected subclause:** [[lex.operators]](lex.operators) **Change:** New operator ^^[.](#1.sentence-1) **Rationale:** Required for new features[.](#1.sentence-2) **Effect on original feature:** Valid C++ 2023 code that contains two consecutive ^ tokens can be ill-formed in this revision of C++[.](#1.sentence-3) [*Example [1](#example-1)*: struct C { int operator^(int); };int operator^(int (C::*p)(int), C);int i = &C::operator^^C{}; // ill-formed; previously well-formed — *end example*] [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L32) **Affected subclause:** [[lex.key]](lex.key) **Change:** New keywords[.](#2.sentence-1) **Rationale:** Required for new features[.](#2.sentence-2) - [(2.1)](#2.1) The contract_assert keyword is added to introduce a contract assertion through an [*assertion-statement*](stmt.contract.assert#nt:assertion-statement "8.9 Assertion statement [stmt.contract.assert]") ([[stmt.contract.assert]](stmt.contract.assert "8.9 Assertion statement")). **Effect on original feature:** Valid C++ 2023 code using contract_assert as an identifier is not valid in this revision of C++[.](#2.sentence-3)