Commit b6413764 by Jason Merrill Committed by Jason Merrill

re PR c++/48945 ([C++0x] static constexpr member function cannot be defined out-of class)

	PR c++/48945
	* decl.c (revert_static_member_fn): Ignore const on constexpr fn.

From-SVN: r174006
parent 967444bb
2011-05-20 Jason Merrill <jason@redhat.com> 2011-05-20 Jason Merrill <jason@redhat.com>
PR c++/48945
* decl.c (revert_static_member_fn): Ignore const on constexpr fn.
PR c++/48780 PR c++/48780
* cvt.c (type_promotes_to): Don't promote scoped enums. * cvt.c (type_promotes_to): Don't promote scoped enums.
......
...@@ -13575,10 +13575,15 @@ void ...@@ -13575,10 +13575,15 @@ void
revert_static_member_fn (tree decl) revert_static_member_fn (tree decl)
{ {
tree stype = static_fn_type (decl); tree stype = static_fn_type (decl);
cp_cv_quals quals = type_memfn_quals (stype);
if (type_memfn_quals (stype) != TYPE_UNQUALIFIED) if (quals != TYPE_UNQUALIFIED)
{ {
error ("static member function %q#D declared with type qualifiers", decl); if (quals == TYPE_QUAL_CONST && DECL_DECLARED_CONSTEXPR_P (decl))
/* The const was implicit, don't complain. */;
else
error ("static member function %q#D declared with type qualifiers",
decl);
stype = apply_memfn_quals (stype, TYPE_UNQUALIFIED); stype = apply_memfn_quals (stype, TYPE_UNQUALIFIED);
} }
TREE_TYPE (decl) = stype; TREE_TYPE (decl) = stype;
......
2011-05-20 Jason Merrill <jason@redhat.com> 2011-05-20 Jason Merrill <jason@redhat.com>
* g++.dg/cpp0x/constexpr-static7.C: New.
* g++.dg/cpp0x/enum12.C: New. * g++.dg/cpp0x/enum12.C: New.
* g++.dg/cpp0x/enum13.C: New. * g++.dg/cpp0x/enum13.C: New.
......
// PR c++/48945
// { dg-options -std=c++0x }
struct A {
static constexpr bool is();
};
constexpr bool A::is() { return true; }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment