https://cppcon2018.sched.com/event/FnLL/contract-programming-in-c++20-part-1-of-2