This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/53000] Conditional operator does not behave as standardized
- From: "daniel.kruegler at googlemail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 10 Oct 2012 10:55:02 +0000
- Subject: [Bug c++/53000] Conditional operator does not behave as standardized
- Auto-submitted: auto-generated
- References: <bug-53000-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53000
--- Comment #16 from Daniel KrÃgler <daniel.kruegler at googlemail dot com> 2012-10-10 10:55:02 UTC ---
(In reply to comment #12)
> So we now have:
>
> common_type<const int&>::type -> const int&
> common_type<const int&,const int&>::type -> int
>
> ?
>
> If we are going with this resolution, I think the 1 argument version should
> derive from decay.
I noticed the same problem recently, when playing around with a variadic
make_array function (search in the test-suite for it once Paolo has committed
my recent changes to the main line). The problem is now that common_type is now
dependent on the size of the variadic argument expansion. Personally I feel
uncertain what the best approach would be: Declaring LWG 2141 as NAD (and fix
the affected other places in the library, which at least unique_ptr's
comparison functions), or add decay to the unary form or finally keeping the
P/R. I'm in the process of sending a message to the LWG group with the
make_array as an example to make LWG of this problem aware. I have no problem
to accept that we undo the 2141 application in the library, if this is what you
would like to see for the moment. This is also a message to the committee.