OSDN Git Service

2001-02-26 Jeffrey Oldham <oldham@codesourcery.com>
authoroldham <oldham@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 26 Feb 2001 15:59:30 +0000 (15:59 +0000)
committeroldham <oldham@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 26 Feb 2001 15:59:30 +0000 (15:59 +0000)
* call.c (joust): Ensure more_specialized()'s argument length
parameter has correct value for constructors.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@40068 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/call.c

index ede5dc1..4b0b80b 100644 (file)
@@ -1,3 +1,8 @@
+2001-02-26  Jeffrey Oldham  <oldham@codesourcery.com>
+
+       * call.c (joust): Ensure more_specialized()'s argument length
+       parameter has correct value for constructors.
+
 2001-02-26  Nathan Sidwell  <nathan@codesourcery.com>
 
        * except.c (call_eh_info): Cleanup generation of cp_eh_info struct.
index b7e6e94..a9af402 100644 (file)
@@ -5221,14 +5221,18 @@ joust (cand1, cand2, warn)
       winner = more_specialized
         (TI_TEMPLATE (cand1->template), TI_TEMPLATE (cand2->template),
          DEDUCE_ORDER,
-         /* Tell the deduction code how many real function arguments we saw,
-           not counting the implicit 'this' argument.
+         /* Tell the deduction code how many real function arguments
+           we saw, not counting the implicit 'this' argument.  But,
+           add_function_candidate() suppresses the "this" argument
+           for constructors.
 
            [temp.func.order]: The presence of unused ellipsis and default
            arguments has no effect on the partial ordering of function
            templates.  */
          TREE_VEC_LENGTH (cand1->convs)
-         - DECL_NONSTATIC_MEMBER_FUNCTION_P (cand1->fn));
+        - (DECL_NONSTATIC_MEMBER_FUNCTION_P (cand1->fn)
+           - DECL_CONSTRUCTOR_P (cand1->fn)));
+      /* HERE */
       if (winner)
         return winner;
     }