#include <optional>
bool f() {
std::optional<int> opt;
return opt;
}
Tidak mengkompilasi: 'return': cannot convert from 'std::optional<int>' to 'bool'
Referensi konsultasi Saya akan berpikir untuk menemukan penjelasan, tetapi saya membacanya sebagaimana mestinya ok.
Konversi tersirat dilakukan setiap kali ekspresi dari beberapa tipe T1 digunakan dalam konteks yang tidak menerima tipe itu, tetapi menerima beberapa tipe T2 lainnya; khususnya:
- ketika ekspresi digunakan sebagai argumen saat memanggil fungsi yang dideklarasikan dengan T2 sebagai parameter;
- ketika ekspresi digunakan sebagai operan dengan operator yang mengharapkan T2;
- saat menginisialisasi objek baru tipe T2, termasuk pernyataan pengembalian dalam fungsi mengembalikan T2;
- ketika ekspresi digunakan dalam pernyataan switch (T2 adalah tipe integral);
- ketika ekspresi digunakan dalam pernyataan if atau loop (T2 bool).
operator bool()
daristd::optional
adalahexplicit
.