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++/53000] Conditional operator does not behave as standardized


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.


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