This is the mail archive of the cygwin mailing list for the Cygwin project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Ivan Shynkarenka wrote:
I use x64 bit Cygwin and it failed in my home, work and Appveyor. I add cygcheck.out with my environment. I'm sorry about misspell prefix space in my prev example. Please try the following one: #include <fstream> #include <iostream> int main(int argc, char** argv) { std::string line; std::ifstream stream("test.cpp"); while (getline(stream, line)) std::cout << line << std::endl; return 0; } g++ -std=gnu++17 test.cpp
Could reproduce this with 32 and 64 bit Cygwin g++ 7.3.0A comparison of preprocessor (-E) outputs shows that the "extern template" declarations for getline() are only visible for C++ <= 14. These are guarded by "__cplusplus <= 1402" in basic_string.tcc. This should tell the compiler to generate new code for getline() if C++17 is enabled instead of calling the (now incompatible) function in cygstdc++-6.dll.
A comparison of assembly (-S) outputs shows that this does not work: If C++17 is enabled, the compiler correctly generates local code for getline(istream &, string &) but this code calls an external getline(istream &, string &, char). Then the linker generates a call to this getline() in cygstdc++-6.dll.
This is because there is a bogus prototype specialization for getline(istream &, string &, char) in basic_string.h but no corresponding implementation in basic_string.tcc. This has apparently an equivalent effect as 'extern template'.
The attached patch for /usr/lib/gcc/*-pc-cygwin/7.3.0/include/c++/bits/basic_string.h fixes this. Christian
Attachment:
basic_string.h.patch
Description: Text document
-- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |