This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC 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]

[Bug c++/42352] New: -std=c++0x reference binding problem


Platform:
  Fedora release 12 (Constantine)
  Linux cage.lbl.gov 2.6.31.5-127.fc12.x86_64 #1 SMP Sat Nov 7 21:11:14 EST
2009 x86_64 x86_64 x86_64 GNU/Linux

URL: svn://gcc.gnu.org/svn/gcc/trunk
Revision: 150327 or higher

gcc version 4.5.0 20090801 (experimental) (GCC)

I'll attach a reproducer.

g++ -c -std=c++0x list_sort_bind.cpp
...
include/c++/4.5.0/bits/list.tcc:392:3: error: cannot bind 'std::list<int>'
lvalue to 'std::list<int>&&'
...

It works without -std=c++0x.
svn rev. 150326 works, 150327 does not.

The critical svn revision was:

% svn log -v -c150327
------------------------------------------------------------------------
r150327 | jason | 2009-07-31 19:26:42 -0700 (Fri, 31 Jul 2009) | 16 lines
Changed paths:
   M /trunk/gcc/cp/ChangeLog
   M /trunk/gcc/cp/call.c
   M /trunk/gcc/cp/cp-tree.h
   M /trunk/gcc/cp/typeck.c
   M /trunk/gcc/testsuite/ChangeLog
   M /trunk/gcc/testsuite/g++.dg/cpp0x/initlist22.C
   M /trunk/gcc/testsuite/g++.dg/cpp0x/named.C
   M /trunk/gcc/testsuite/g++.dg/cpp0x/overload.C
   A /trunk/gcc/testsuite/g++.dg/cpp0x/overloadn.C (from
/trunk/gcc/testsuite/g++.dg/cpp0x/overload.C:150326)
   A /trunk/gcc/testsuite/g++.dg/cpp0x/rv-cast.C
   M /trunk/gcc/testsuite/g++.dg/cpp0x/rv1n.C
   M /trunk/gcc/testsuite/g++.dg/cpp0x/rv1p.C
   M /trunk/gcc/testsuite/g++.dg/cpp0x/rv2n.C
   M /trunk/gcc/testsuite/g++.dg/cpp0x/rv2p.C
   M /trunk/gcc/testsuite/g++.dg/cpp0x/rv3n.C
   M /trunk/gcc/testsuite/g++.dg/cpp0x/rv3p.C
   M /trunk/gcc/testsuite/g++.dg/cpp0x/rv4n.C
   M /trunk/gcc/testsuite/g++.dg/cpp0x/rv4p.C
   M /trunk/gcc/testsuite/g++.dg/cpp0x/rv5n.C
   M /trunk/gcc/testsuite/g++.dg/cpp0x/rv5p.C
   M /trunk/gcc/testsuite/g++.dg/cpp0x/rv6n.C
   M /trunk/gcc/testsuite/g++.dg/cpp0x/rv6p.C
   M /trunk/gcc/testsuite/g++.dg/cpp0x/rv7n.C
   M /trunk/gcc/testsuite/g++.dg/cpp0x/rv7p.C
   M /trunk/gcc/testsuite/g++.dg/cpp0x/rv8p.C
   M /trunk/gcc/testsuite/g++.dg/cpp0x/template_deduction.C
   M /trunk/gcc/testsuite/g++.dg/cpp0x/unnamed_refs.C
   M /trunk/libstdc++-v3/ChangeLog
   M /trunk/libstdc++-v3/include/bits/move.h
   M /trunk/libstdc++-v3/include/std/istream
   M /trunk/libstdc++-v3/include/std/ostream
   A /trunk/libstdc++-v3/testsuite/27_io/rvalue_streams.cc

        * call.c (convert_class_to_reference): Binding an lvalue to an
        rvalue reference is bad.  If the user-defined conversion is bad,
        set bad_p before merging conversions.
        (maybe_handle_ref_bind): Don't push down bad_p.
        (reference_binding): Binding an lvalue to an rvalue reference is bad.
        (convert_like_real): Give a helpful error about binding lvalue
        to rvalue reference.
        (reference_related_p): No longer static.
        * typeck.c (build_typed_address): New.
        (build_static_cast_1): Add static_cast from lvalue to &&.
        * cp-tree.h: Adjust.

        * include/bits/move.h (forward): Implement as in N2835.
        (move): Implement as in N2831.
        * include/std/istream (rvalue stream operator>>): New.
        * include/std/ostream (rvalue stream operator<<): New.
------------------------------------------------------------------------


-- 
           Summary: -std=c++0x reference binding problem
           Product: gcc
           Version: 4.5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: rwgk at yahoo dot com
 GCC build triplet: x86_64-unknown-linux-gnu
  GCC host triplet: x86_64-unknown-linux-gnu
GCC target triplet: x86_64-unknown-linux-gnu


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]