This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/40486] [c++0x] rvalue-references no longer bind to lvalues
- From: "dragan at plusplus dot co dot yu" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 18 Jun 2009 14:19:37 -0000
- Subject: [Bug c++/40486] [c++0x] rvalue-references no longer bind to lvalues
- References: <bug-40486-15652@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #4 from dragan at plusplus dot co dot yu 2009-06-18 14:19 -------
(In reply to comment #3)
> Also, n2844 and Doug's patch don't update std::make_pair, so it won't accept
> lvalues according to the current draft. That needs fixing too.
>
If you are referring to:
template <MoveConstructible T1, MoveConstructible T2>
pair<V1, V2> make_pair(T1&& x, T2&& y);
I'm not into concepts yet (the reason being obvious :-), but I think
T1,T2 can be lvalue-references. Unfortunately, in this case, under
reference collapsing rules, this _will_ accept lvalues and perfectly forward
them to the pair constructor.
Am I off the track here? As for deducing pair template parameters as described
in WP, I can only see symptoms of "coding under influence" :-D
I say "unfortunately" above, because I don't like the syntax (namely &&)
used to express a function that can take both lvalues and rvalues.
I have objected on comp.std.c++, but got no real support.
Also, about move and forward. IMHO, those presented in the patch
seem fine. Did I understand correctly that the only thing you
are waiting is acceptance into WP? I guess the functionality will
remain the same. It might be they have issues with concepts.
I'm only guessing, so I apologize if you have some _solid_ information.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40486