[Bug c++/48948] [C++0x] constexpr friend function cannot be defined in-class

jason at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed May 11 21:37:00 GMT 2011


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



More information about the Gcc-bugs mailing list