1) Žádná operace ani konverze v BASIXu nesmí vést k nedefinovanému chování (UB) jazyka C++, do kterého se program překládá. Kdekoliv by ekvivalentní C++ konstrukce UB měla, BASIX pro ni definuje vlastní, deterministické chování — typicky saturací.
Na nedefinovaném chování v C(++) není špatně to, že ta operace nevrací nějakou normální hodnotu, ale že je ten stav nedovolený a ne chybný. Nové C++ to svými "errorneous behavior" IMO posouvá správným směrem.
Vem si třeba přetečení. V drtivé většině případů nechceš ani saturaci ani wrap. Prostě s tím vůbec nepočítáš a každá z těch 2^N možných hodnot je blbě. Co chceš je povolit v nějakém testovacím buildu trap, aby se to dalo chytnout. Jak to přetečení dodefinuješ, tak donutíš překladač ti potichu vrátit nesmysl.
Jo, prostě při chybě neudělat nic je velmi lákavá myšlenka. ALE:
1) Jak velká blbost to je obvykle člověku dojde až když musí řešit následky.
2) Funkce co něco vrací vždycky něco dělá.
Takže doporučuju rychle napsat prototyp a zkusit ho používat. Ať víš, cos to navrhl.