This is the mail archive of the gcc-patches@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] |
2017-03-11 23:14 GMT+01:00 Daniel Krügler <daniel.kruegler@gmail.com>: > 2017-03-11 23:09 GMT+01:00 Tim Song <t.canens.cpp@gmail.com>: >> On Sat, Mar 11, 2017 at 3:37 PM, Daniel Krügler >> <daniel.kruegler@gmail.com> wrote: >>> 2017-03-11 21:23 GMT+01:00 Tim Song <t.canens.cpp@gmail.com>: >>>> On Sat, Mar 11, 2017 at 1:32 PM, Daniel Krügler >>>> <daniel.kruegler@gmail.com> wrote: >>>>> This patch applies inline to all namespace scope const variables >>>>> according to options A and B2 voted in during the Kona meeting, see: >>>>> >>>>> http://wiki.edg.com/pub/Wg21kona2017/StrawPolls/p0607r0.html >>>>> >>>>> During that work it has been found that std::ignore was not declared >>>>> constexpr (http://cplusplus.github.io/LWG/lwg-defects.html#2773), >>>>> which was fixed as well. >>>> >>>> Just adding constexpr to std::ignore does ~nothing. The assignment >>>> operator needs to be made constexpr too; there is really no other >>>> reason to use std::ignore. >>> >>> There is nothing in the resolution of the issue (Nor in the discussion >>> that argues for the change) that says so. Yes, I considered to make >>> the assignment function template constexpr, but decided against it, >>> because the wording of the issue doesn't have this requirement). I'm >>> also aware of a test-case which would show the difference, but again: >>> This was not what the issue said. In fact I'm in the process to open a >>> new library issue that should impose that additional requirement. >>> >>> - Daniel >> >> Well, technically speaking, the issue resolution doesn't even >> guarantee that the use case mentioned in the issue would compile since >> the standard says nothing about whether the copy constructor of >> decltype(std::ignore) is constexpr, or even whether it can be copied >> at all. Yes, std::ignore is underspecified, but I'm not sure I see the >> point in waiting; it's a completely conforming change and IMHO the >> issue's intent is clearly to make std::ignore fully usable in >> constexpr functions. >> >> Also, the only specification we have for std::ignore's semantics is >> "when an argument in t is ignore, assigning any value to the >> corresponding tuple element has no effect". I think one can argue that >> "causes an expression to be non-constant" is an "effect". >> >> Re "new library issue", we already have issue 2933. > > Good point, it already exists ;-) Revised patch attached. > - Daniel
Attachment:
ChangeLog_p0607r0.patch
Description: Binary data
Attachment:
p0607r0.patch
Description: Binary data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |