One more: I noticed that we were calling require_complete_type within template-specific code, but in a template require_complete_type just returns immediately.

Tested x86_64-pc-linux-gnu, applying to trunk.
commit 453649bdbc1189503b34774d5a6cf2470a6bcd12
Author: Jason Merrill <ja...@redhat.com>
Date:   Wed Mar 16 14:16:27 2011 -0400

        * call.c (build_over_call): Remove require_complete_type_sfinae call.

diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 436c956..d040ec8 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -5994,8 +5994,6 @@ build_over_call (struct z_candidate *cand, int flags, 
tsubst_flags_t complain)
                                   argarray);
       if (TREE_THIS_VOLATILE (fn) && cfun)
        current_function_returns_abnormally = 1;
-      if (!VOID_TYPE_P (return_type))
-       require_complete_type_sfinae (return_type, complain);
       return convert_from_reference (expr);
     }
 

Reply via email to