[Bug c++/11972] New: Problems with allocator::rebind::other

gcc-bugzilla at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Mon Aug 18 21:13:00 GMT 2003


PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

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

           Summary: Problems with allocator::rebind::other
           Product: gcc
           Version: 3.4
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: poschmid at lbl dot gov
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu

The code a.C is rejected by gcc 3.4. This breaks some parts of boost.

Environment:
System: Linux linux 2.4.20-4GB #1 Fri Jul 11 07:33:18 UTC 2003 i686 unknown unknown GNU/Linux
Architecture: i686
SuSE 8.2
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../gcc/configure --enable-threads=posix --enable-languages=c,c++,f77,objc --enable-__cxa_atexit --enable-debug

How-To-Repeat:
source code a.C
template<typename _Tp>
class allocator
{
    template<typename _Tp1>
    struct rebind
    { typedef allocator<_Tp1> other; };

    allocator() throw() { }

    allocator(const allocator&) throw() { }

    template<typename _Tp1>
    allocator(const allocator<_Tp1>&) throw() { }
};

template<typename T>
void f()
{
    typedef allocator<int> alloc1_t;

    typedef typename alloc1_t::template rebind<double> binder_t;
    typedef typename binder_t::other alloc2_t;

    alloc1_t a1;
    alloc2_t a3(a1);
}

g++ -v -W -Wall a.C
Reading specs from /usr/local/lib/gcc/i686-pc-linux-gnu/3.4/specs
Configured with: ../gcc/configure --enable-threads=posix --enable-languages=c,c++,f77,objc --enable-__cxa_atexit --enable-debug
Thread model: posix
gcc version 3.4 20030806 (experimental)
 /usr/local/libexec/gcc/i686-pc-linux-gnu/3.4/cc1plus -quiet -v -D_GNU_SOURCE a.C -quiet -dumpbase a.C -mtune=pentiumpro -auxbase a -W -Wall -version -o /tmp/ccW5FFki.s
ignoring nonexistent directory "NONE/include"
ignoring nonexistent directory "/usr/local/lib/gcc/i686-pc-linux-gnu/3.4/../../../../i686-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/lib/gcc/i686-pc-linux-gnu/3.4/../../../../include/c++/3.4
 /usr/local/lib/gcc/i686-pc-linux-gnu/3.4/../../../../include/c++/3.4/i686-pc-linux-gnu
 /usr/local/lib/gcc/i686-pc-linux-gnu/3.4/../../../../include/c++/3.4/backward
 /usr/local/include
 /usr/local/lib/gcc/i686-pc-linux-gnu/3.4/include
 /usr/include
End of search list.
GNU C++ version 3.4 20030806 (experimental) (i686-pc-linux-gnu)
	compiled by GNU C version 3.4 20030806 (experimental).
GGC heuristics: --param ggc-min-expand=47 --param ggc-min-heapsize=31899
a.C: In function `void f()':
a.C:22: error: no type named `other' in `struct f()::binder_t'
a.C:22: error: ISO C++ forbids declaration of `alloc2_t' with no type

Compilation exited abnormally with code 1 at Wed Aug 13 00:49:53



More information about the Gcc-bugs mailing list