#include <optional>
bool f() {
std::optional<int> opt;
return opt;
}
Derlemez: 'return': cannot convert from 'std::optional<int>' to 'bool'
Referansa danışmak Bir açıklama bulmayı düşünürdüm, ama olması gerektiği gibi okudum.
Örtük dönüşümler, T1 türünde bir ifade, bu türü kabul etmeyen, ancak başka bir T2 türünü kabul eden bağlamda kullanıldığında gerçekleştirilir; özellikle:
- parametre olarak T2 ile bildirilen bir işlevi çağırırken ifade argüman olarak kullanıldığında;
- ifade T2'yi bekleyen bir işleçle birlikte işlenen olarak kullanıldığında;
- T2 döndüren bir işlevde return ifadesi de dahil olmak üzere T2 türünde yeni bir nesne başlatırken;
- ifade bir switch ifadesinde kullanıldığında (T2 integral tiptir);
- ifade bir if ifadesinde veya döngüde kullanıldığında (T2 bool'dur).
operator bool()
birstd::optional
olduğunuexplicit
.