C++ Optional

Da Andreabont's Wiki.

In C++17 è possibile usare la classe optional che permette di definire un oggetto di un certo tipo che però potrebbe non essere valorizzato (è opzionale)

Esempio base

#include <optional>
#include <iostream>
#include <string>

int main() {

    std::optional<std::string> testo;

    std::cout << testo.value_or("vuoto") << std::endl; // Ritorna "vuoto"

    testo = "ciao";

    std::cout << testo.value_or("vuoto") << std::endl; // Ritorna "ciao"

}

Esempio come ritorno di una funzione

std::optional<std::string> miaFunzione(int x) {
    if(x > 100) {
        return "Numero alto";
    } else {
        return {}; // Oppure std::nullopt
    }
}