P4423R0 — Strict contracts: conveyor functions and conveyor predicates
Ville Voutilainen
EWG
This paper presents the design and an implementation of strict contracts: contract predicates that are guaranteed by the compiler to be free of side effects and of undefined behavior. It builds on the conveyor functions of [P2680](https://wg21.link/p2680) and [P3285](https://wg21.link/p3285), and expresses strictness through the control objects of [P4324](https://wg21.link/p4324), of which this paper is a companion. It describes two escape hatches, shows how the standard library's hardened preconditions become strict contracts, and describes the static analysis the compiler performs on top of strict contracts, cross-analyzed against the requirements set out in [P3362](https://wg21.link/p3362).