#include <optional>
bool f() {
std::optional<int> opt;
return opt;
}
Non compilare: 'return': cannot convert from 'std::optional<int>' to 'bool'
Consultazione di riferimento Avrei pensato di trovare una spiegazione, ma l'ho letto come dovrebbe essere ok.
Le conversioni implicite vengono eseguite ogni volta che nel contesto viene utilizzata un'espressione di un tipo T1 che non accetta quel tipo, ma accetta qualche altro tipo T2; in particolare:
- quando l'espressione viene utilizzata come argomento quando si chiama una funzione dichiarata con T2 come parametro;
- quando l'espressione viene utilizzata come operando con un operatore che prevede T2;
- quando si inizializza un nuovo oggetto di tipo T2, inclusa l'istruzione return in una funzione che restituisce T2;
- quando l'espressione viene utilizzata in un'istruzione switch (T2 è di tipo integrale);
- quando l'espressione viene utilizzata in un'istruzione if o in un ciclo (T2 è bool).
operator bool()
distd::optional
isexplicit
.