Hacker News Front Page · ibobev ·
C++26 Contracts: Introduction to Preconditions and Postconditions
C++26 incorpora contratos para expresar precondiciones con `pre`, postcondiciones con `post` y comprobaciones internas con `contract_assert`, haciendo visibles los requisitos y las garantías en las declaraciones de funciones. La semántica de evaluación seleccionada por la implementación puede ignorar una comprobación, notificar una infracción, terminar el programa o finalizarlo sin invocar el manejador; por eso, los contratos no deben sustituir el flujo de control para validar entradas ni gestionar errores esperados. El texto también muestra ejemplos con GCC, explica reglas como la constancia de parámetros por valor usados en postcondiciones y recomienda evitar efectos secundarios en los predicados.
In the article about Standard Library hardening, we looked at checks for invalid Standard Library container access and other broken preconditions. I mentioned that those requirements are expressed in terms of “contracts”. But what about our code? In this post, we’ll explore contracts from C++26. We’ll start with a simple cassert, move the requirement into the function itself, and see how to check results.