Procitao sam tek prvih par stranica i vec tu se spominje da su u nekim slucajevima izuzeci neophodni (npr. kao mehanizam prijave greske u konstruktoru).
Tu ne pomaze ni std::optional. Alternativa je naravno da svaki objekat drzi interno stanje koje govori da li je validan ili ne, ali to mi nekako narusava invarijantnost. Moje razumijevanje je da konstruktor treba ili da uspije i pritom uspostavi invarijantu (objekat), ili da baci izuzetak ako invarijanta ne moze da se uspostavi. Na taj nacin je koristenje objekta sigurno, npr. korisnik ne moze slucajno da zaboravi da provjeri da li je objekat validan.
Ne znam kako funkcionisu tagged unije u Rustu, ali pretpostavljam da imaju isti problem?
U svakom slucaju, fokus na rjesavanje ovog problema je i vise nego dobrodosao.