Hvorfor er boost::optional::is_initialized() avviklet?
Nei, fordi det ikke er noen implisitt konvertering til den underliggende typen. «Sannheten»¹ til en valgfri alltid refererer til dens initialiserte tilstand.
Den eneste gangen du kanskje har fått inntrykket at implisitte konverteringer skjer er i relasjonsoperatorer. Det betyr imidlertid ikke implisitt konvertering til den underliggende typen, men løfting av operatørene, eksplisitt.
¹ som jeg mener kontekstuell (eksplisitt) boolsk konvertering
Oppdater
Faktisk for boost::optional<bool>
det er forbeholdet i pre-c++11-modus:
I så fall er det klart bedre å eksplisitt sammenligne med boost::none
.