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] |
Hi,the second half of the bug report is about C++14 variable declarations in constexpr functions, an implementation request which should be already done by Jason's recent commit.
The first half is about us not rejecting in C++11 mode type declarations in constexpr functions outside, per 7.1.5/3/4:
"typedef declarations and alias-declarations that do not define classes or enumerations,"
In fact, however, while working on the issue, I noticed that conversely we reject *all* type declarations in constructors (actually we used to ICE on those, which a while ago I turned to reject valid), eg:
struct S { constexpr S() { typedef int T; } };Thus I prepared the below, which in C++11 mode checks the exact requirements above, both for constructors and all the other functions. I had to add handling of BIND_EXPRs to the main conditional of build_constexpr_constructor_member_initializers, otherwise we ICE immediately on something as simple as the snippet above: I think all is fine because we get to the conditional having checked the BIND_EXPR_VARS part with the new checking function. Tested x86_64-linux.
Thanks! Paolo. /////////////////////
Attachment:
CL_55250
Description: Text document
Attachment:
patch_55250
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |