<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/60507>60507</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
std::ifstream eof difference between libc++ and libstdc++11
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
morozyto
</td>
</tr>
</table>
<pre>
Hi!
I have got this code:
`
#include <fstream>
#include <vector>
int main() {
const std::string path = "/tmp/some_random_path"; // this file do not exist before running of program
std::ofstream file_output(path);
std::ifstream file_input(path, std::ios::in | std::ios::binary);
file_input.peek();
if (!file_input.eof()) {
return 1;
}
std::vector<char> data = {'a', 'b', 'c'};
file_output.write(data.data(), static_cast<long>(data.size()));
file_output.flush();
file_input.clear();
file_input.peek();
if (file_input.eof()) {
return 2; // libc++
}
return 0; // libstdc++11
}
`
I tried to compile it with againt libstdc++11 ( clang++ main.cpp ) and against libc++ (clang++ -stdlib=libc++ main.cpp). I expect success return code for both libc++ and libstdc++11, but libc++ eof flag is not updated. Is it valid?
My specs:
Ubuntu Description: Ubuntu 20.04.4 LTS Release: 20.04 Codename: focal
Ubuntu clang version 15.0.7
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/10
Selected multilib: .;@m64
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVU1v4zYQ_TX0ZRBBoizLPviQ2FW7QHvpbs8BRY4kthQpkCMn2V9fUJJjOZti0SCgCc578_GGQ4kQdGsRj6x4YsV5I0bqnD_2zrvvb-Q2tVNvx9804xlLzyx9nNcv0IkLQusIqNMBpFPI8sXIdumy4bm20owKgeWnJpBH0bP8l8-sF5Tk_M04rdoS9EJbxveMH4CVT_M5SGcDQSAVg-aPgby2LQyCOmD5GRjnjFfUD4xXwfX47IVVrn-OgGjLn4DxivFqzr7RBkE5sI4AX3UgqLFxHsGP1kbHroHBu9aLfokPcAvulsImN89upGEkxvdzrAPLrzm_E_QdQds1_rSCubBsLLDyM0OtrfBvd0FuLpMB8Z9ZuHfzLXvdwGTLVgR0zYK_03r580ijt5DdYgEAK8-fKHLt5Ul2IrYUlCAxN6Z8YrwUjJexVMbL-raVcVueP9Qy65m8eE3I-D56SuJyzTTqIkjLZykCsfxknG3jLVqgQX_H96J-VGrx3pgxdP-p1UoiaVD4D8CfaH5T-_9Kvb6nRteS8af4_7n4Cye95wRSCy27zu-VdJvSZaLJa1RADqTrhzgRmuBFUweiFXEQP7iLFYE0wrbzyTSoiRwGiDUJq2ZeoFXukbOmPARSRtcsP68wVz-MHxL4Avg6oCQIo5QYwrXO-OBA4zzUjrp1hBj4Y-H8BPV4lwe6BhojWtBhmvpxUIJQJfAlxLIvwmjF8mot0B9vEAaU4f2Z-6seLY1wxiC9Hkg7y_JHWE55mqTbZAu_f_sKf6JBEeL7OB_DySm0op9OGieFuXM4CQQX9EE7C1mRpEk5A74J3yJF1ut-97zbPgzywWg7vj60doQF03kUCnqn0ETk4IJ-XVpsAwljUJ21jybGqzF4xqs6vjAT5CsalIQKfj2dQM94cS1tjWe8ShLGq9g9XrVSMl4tSb1nxHiVpR8d96MhPfX8EZI4JNu032036pirQ34QGzxmu7LYcp4V2aY7lrmSGc-KnSq5lFhgke0bnhdpobaiLA8bfeQpz1Oe5lmW8jxLCpnz_UGJHRa83O8Ktk2xF9okxlz6xPl2o0MY8bhLi7TcGFGjCdPHj3OLLzAZ4zeiOG_8MXIe6rENbJsaHSjcvJAmg8cfH_V4tZRuGvRoJUKN9IJof3JFN6M3x45omK7XNL6tpm6sE-n6KLO5XH8eBu_-RkmMV1OugfFqquXfAAAA___1rUzZ">