explicit operator bool von std::istream::sentry
-
hallo leute,
ich hab zwei sentry object:
std::istream::sentry ok1(my_istream1); std::istream::sentry *ok2 = new std::istream::sentry(my_istream2);
warum funktioniert das:
auto get_sentry1(void) const -> bool { return ok1; }
aber das nicht:
auto get_sentry2(void) const -> bool { return *ok2; }
?
bekomm den fehler:error C2440: "return": "std::basic_istream<char,std::char_traits<char>>::sentry" kann nicht in "bool" konvertiert werden
irgendwie steh ich grad auf der leitung
danke
Meep Meep
-
Hallo,
der Konvertierungsoperator von
std::istream::sentry
zubool
istexplicit
(Quelle); du brauchst also einen expliziten Cast.
Dassget_sentry1
so kompiliert, liegt wahrscheinlich daran, dass MSVC hierbei nicht standardkonform ist.LG