Ich hatte einen Tippfehler (||
anstelle von |
) und bemerkte, dass ein solcher Code mit GCC fehlschlägt und kompiliert mit Visual. Ich weiß, dass der zweite Parameter std::ifstream
ein int
ist. Theoretisch muss also eine bool
implizit in eine int
konvertiert werden. Warum scheitert es?Typo: Bool zu Int Umwandlung induzierten Fehler in Std :: Ifstream unter Linux
Beispiel, das den Fehler verursacht (Ich habe nur einige Ints anstelle der Flags verwendet).
#include <fstream>
int main(int argc, char * argv[]) {
std::ifstream("foo", 2 | 3 || 4)
}
Thx für die Antwort. Ungeachtet des Grundes erscheint es mir ein bisschen seltsam. Was könnte der Grund dafür sein, dass der Typ eines Standardbibliothek-Funktionsparameters die Implementierung definiert ist? Könnte es nicht zu einem Portabilitätsproblem führen? – dgrat
@dgrat du sollst nur den explizit definierten 'openmode' verwenden. – YSC
Ich frage mich ein wenig über alle Up-Stimmen meiner Frage. Erwartet das Gegenteil, denn es scheint ein Anfängerproblem zu sein. – dgrat