Miałem literówkę (||
zamiast |
) i zauważyłem, że taki kod nie działa z GCC i kompiluje się z Visual. Wiem, że drugim parametrem std::ifstream
jest int
. Więc teoretycznie, bool
musi zostać przekonwertowany w sposób niejawny na int
. Dlaczego więc się nie udaje?Typo: błąd wywołany boolem na int w std :: ifstream pod Linuksem
Przykład wywoływania błędu (użyłem tylko niektórych ints zamiast flag).
#include <fstream>
int main(int argc, char * argv[]) {
std::ifstream("foo", 2 | 3 || 4)
}
Thx za odpowiedź. Bez względu na przyczynę, wydaje mi się to trochę dziwne. Co może być przyczyną zdefiniowania typu standardowego parametru funkcji bibliotecznej. Czy nie może to spowodować problemu z przenośnością? – dgrat
@ Gratulujemy, że należy tylko zdefiniować jawnie 'openmode'. – YSC
Zastanawiam się trochę nad wszystkimi głosami na moje pytanie. Oczekiwano czegoś przeciwnego, ponieważ wydaje się, że jest to problem początkujący. – dgrat