Hvorfor er boost::optional::is_initialized() avviklet?

 C Programming >> C C# Program >  >> Tags >> Boost
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 .