http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48948
--- Comment #7 from Jason Merrill <jason at gcc dot gnu.org> 2011-05-11 21:30:23 UTC --- Author: jason Date: Wed May 11 21:30:18 2011 New Revision: 173683 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=173683 Log: PR c++/48948 * semantics.c (validate_constexpr_fundecl): Defer checking if an argument type is being defined. (is_valid_constexpr_fn): Add defer_ok parm. (cxx_eval_call_expression): Adjust. (check_deferred_constexpr_decls): New. (literal_type_p): Make sure type isn't being defined. (ensure_literal_type_for_constexpr_object): Handle type being defined. * cp-tree.h: Declare check_deferred_constexpr_decls. * decl.c (grokfndecl): Call validate_constexpr_fundecl here. (start_preparsed_function, cp_finish_decl): Not here. * class.c (finalize_literal_type_property): Don't call validate_constexpr_fundecl. (finish_struct): Call check_deferred_constexpr_decls. * pt.c (tsubst_decl): Call validate_constexpr_fundecl. (instantiate_class_template): Call check_deferred_constexpr_decls. Added: trunk/gcc/testsuite/g++.dg/cpp0x/constexpr-friend.C trunk/gcc/testsuite/g++.dg/cpp0x/constexpr-incomplete1.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/class.c trunk/gcc/cp/cp-tree.h trunk/gcc/cp/decl.c trunk/gcc/cp/pt.c trunk/gcc/cp/semantics.c trunk/gcc/testsuite/ChangeLog