>Submitter-Id: net >Originator: Wichert Akkerman <[EMAIL PROTECTED]> >Organization: The Debian project >Confidential: no >Synopsis: error in auto_ptr implementation >Severity: serious >Priority: medium >Category: libstdc++ >Class: rejects-legal >Release: 3.0 (Debian GNU/Linux) >Environment: System: Debian GNU/Linux (testing/unstable) Architecture: i686 host: i386-linux build: i386-linux target: i386-linux configured with: ../src/configure -v --enable-languages=c,c++,java,f77,proto,objc --prefix=/usr --infodir=/share/info --mandir=/share/man --enable-shared --with-gnu-as --with-gnu-ld --with-system-zlib --enable-long-long --enable-nls --without-included-gettext --disable-checking --enable-threads=posix --enable-java-gc=boehm --with-cpp-install-dir=bin --enable-objc-gc i386-linux >Description: [ Reported to the Debian BTS as report #101371. Please CC [EMAIL PROTECTED] on replies. Log of report can be found at http://bugs.debian.org/101371 ] The code below does not compile with g++ 3.0, but it seems correct judging by my C++ books.
Wichert. #include <memory> #include <list> using namespace std; int main(int, char**) { auto_ptr<int> api(new int(5)); list<auto_ptr<int> > lapi; lapi.push_back(api); return 0; } [Comment by Laurent Bonnaud <[EMAIL PROTECTED]>:] This one is much more complicated. I agree with Wichert that this should work, but this is much more involved. I could not think about an easy fix. If you look at /usr/include/g++-v3/bits/std_memory.h, you'll see this comment that lacks precision: // According to the C++ standard, these conversions are required. Most // present-day compilers, however, do not enforce that requirement---and, // in fact, most present-day compilers do not support the language // features that these conversions rely on. The methods it refers too are crucial in making this testcase work. So the real question is: does g++ 3.0 support the necessary language features ? >How-To-Repeat: >Fix: