[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gcc-bugs
Subject:    [Bug libstdc++/52442] New: temporary_buffer does not swap
From:       "giecrilj at stegny dot 2a.pl" <gcc-bugzilla () gcc ! gnu ! org>
Date:       2012-02-29 21:19:54
Message-ID: bug-52442-4 () http ! gcc ! gnu ! org/bugzilla/
[Download RAW message or body]

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52442

             Bug #: 52442
           Summary: temporary_buffer does not swap
    Classification: Unclassified
           Product: gcc
           Version: 4.6.2
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: P3
         Component: libstdc++
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: giecrilj@stegny.2a.pl


Created attachment 26792
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26792
the preprocessed file (*.i*) that triggers the bug

There is currently no way to use a temporary_buffer to implement a
buffer-growing loop as recommended e.g. by gethostname API.  The reason is that
a temporary_buffer does not swap.

  the exact version of GCC: 4.6.2  

  the system type: (SUSE Linux)

  the options given when GCC was configured/built;
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/4.6/lto-wrapper
Target: x86_64-suse-linux
Configured with: ../configure --prefix=/usr --infodir=/usr/share/info
--mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64
--enable-languages=c,c++,objc,fortran,obj-c++,java,ada
--enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.6
--enable-ssp --disable-libssp --disable-plugin
--with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux'
--disable-libgcj --disable-libmudflap --with-slibdir=/lib64 --with-system-zlib
--enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch
--enable-version-specific-runtime-libs --program-suffix=-4.6
--enable-linux-futex --without-system-libunwind --with-arch-32=i586
--with-tune=generic --build=x86_64-suse-linux
Thread model: posix

  the complete command line that triggers the bug: { gcc -c tmpswap.cpp; }

  the compiler output (error messages, warnings, etc.):
In file included from tmpswap.cpp:1:0:
/usr/include/c++/4.6/bits/stl_tempbuf.h: In copy constructor
‘__gnu_cxx::temporary_buffer<char*>::temporary_buffer(const
__gnu_cxx::temporary_buffer<char*>&)':
/usr/include/c++/4.6/ext/memory:184:12:   instantiated from ‘void
std::swap(_Tp&, _Tp&) [with _Tp = __gnu_cxx::temporary_buffer<char*>]'
tmpswap.cpp:7:22:   instantiated from here
/usr/include/c++/4.6/bits/stl_tempbuf.h:174:7: error:
‘std::_Temporary_buffer<_ForwardIterator, _Tp>::_Temporary_buffer(const
std::_Temporary_buffer<_ForwardIterator, _Tp>&) [with _ForwardIterator = char*,
_Tp = char, std::_Temporary_buffer<_ForwardIterator, _Tp> =
std::_Temporary_buffer<char*, char>]' is private
/usr/include/c++/4.6/ext/memory:184:12: error: within this context
In file included from /usr/include/c++/4.6/bits/stl_pair.h:60:0,
                 from /usr/include/c++/4.6/bits/stl_algobase.h:65,
                 from /usr/include/c++/4.6/memory:64,
                 from /usr/include/c++/4.6/ext/memory:62,
                 from tmpswap.cpp:1:
/usr/include/c++/4.6/bits/move.h: In function ‘void std::swap(_Tp&, _Tp&) [with
_Tp = __gnu_cxx::temporary_buffer<char*>]':
tmpswap.cpp:7:22:   instantiated from here
/usr/include/c++/4.6/bits/move.h:127:19: note: synthesized method
‘__gnu_cxx::temporary_buffer<char*>::temporary_buffer(const
__gnu_cxx::temporary_buffer<char*>&)' first required here 
In file included from tmpswap.cpp:1:0:
/usr/include/c++/4.6/bits/stl_tempbuf.h: In member function
‘__gnu_cxx::temporary_buffer<char*>&
__gnu_cxx::temporary_buffer<char*>::operator=(const
__gnu_cxx::temporary_buffer<char*>&)':
/usr/include/c++/4.6/bits/stl_tempbuf.h:177:7: error: ‘void
std::_Temporary_buffer<_ForwardIterator, _Tp>::operator=(const
std::_Temporary_buffer<_ForwardIterator, _Tp>&) [with _ForwardIterator = char*,
_Tp = char, std::_Temporary_buffer<_ForwardIterator, _Tp> =
std::_Temporary_buffer<char*, char>]' is private
/usr/include/c++/4.6/ext/memory:184:12: error: within this context
In file included from /usr/include/c++/4.6/bits/stl_pair.h:60:0,
                 from /usr/include/c++/4.6/bits/stl_algobase.h:65,
                 from /usr/include/c++/4.6/memory:64,
                 from /usr/include/c++/4.6/ext/memory:62,
                 from tmpswap.cpp:1:
/usr/include/c++/4.6/bits/move.h: In function ‘void std::swap(_Tp&, _Tp&) [with
_Tp = __gnu_cxx::temporary_buffer<char*>]':
tmpswap.cpp:7:22:   instantiated from here
/usr/include/c++/4.6/bits/move.h:128:7: note: synthesized method
‘__gnu_cxx::temporary_buffer<char*>&
__gnu_cxx::temporary_buffer<char*>::operator=(const
__gnu_cxx::temporary_buffer<char*>&)' first required here
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic