Thread overview
[Issue 3600] New: template instantiation with empty tuple
Dec 08, 2009
garick
Dec 08, 2009
garick
Dec 29, 2009
Rainer Schuetze
Dec 29, 2009
Don
Jan 18, 2010
Walter Bright
Jan 31, 2010
Walter Bright
December 08, 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3600

           Summary: template instantiation with empty tuple
           Product: D
           Version: 2.036
          Platform: x86
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody@puremagic.com
        ReportedBy: garick_home_333@rambler.ru


--- Comment #0 from garick <garick_home_333@rambler.ru> 2009-12-08 01:36:10 PST ---
string func( A... )( string name, string v )
{
    return "int " ~ name ~ " = " ~ v ~ ";";
}

void main()
{
    writeln( func!( int, long, float )( "val", "10" ) );
    writeln( func!()( "tmp", "77" ) ); // D 2.036 successfully compile this,
                                       // but not 2.037
    // worked in 2.037
    alias func!() TMP;
    writeln( TMP( "tmp", "77" ) );
}

2.037 output:
funcmix.d(13): Error: template funcmix.func(A...) does not match any function
template declaration
funcmix.d(13): Error: template funcmix.func(A...) cannot deduce template
function from argument types !()(string,string)
funcmix.d(13): Error: template instance errors instantiating template

May be because '()' and '()' tuples are incompartible ?
see Issue 3278

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
December 08, 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3600


garick <garick_home_333@rambler.ru> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |major


-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
December 29, 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3600


Rainer Schuetze <r.sagitario@gmx.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |patch
                 CC|                            |r.sagitario@gmx.de


--- Comment #1 from Rainer Schuetze <r.sagitario@gmx.de> 2009-12-29 04:12:05 PST ---
I don't know why this worked before and could not see a change that caused the regression from version 2.036, but here is a patch that adds an empty type tuple to the deduced template parameters if it has not yet been created and does not show up in the function parameters:

Index: template.c ===================================================================
--- template.c    (revision 317)
+++ template.c    (working copy)
@@ -1142,6 +1142,13 @@

     /* Fill in any missing arguments with their defaults.
      */
+    if(tp && fptupindex < 0 && nargsi == dedargs->dim - 1)
+    { // for variadic type parameters not in function parameters, allow empty
tuple
+        Tuple *t = new Tuple();
+        dedargs->data[dedargs->dim - 1] = (void *)t;
+        nargsi++;
+    }
+
     for (i = nargsi; i < dedargs->dim; i++)
     {
     TemplateParameter *tp = (TemplateParameter *)parameters->data[i];

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
December 29, 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3600


Don <clugdbug@yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |clugdbug@yahoo.com.au
           Severity|major                       |regression


-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
January 18, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3600


Walter Bright <bugzilla@digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bugzilla@digitalmars.com


--- Comment #2 from Walter Bright <bugzilla@digitalmars.com> 2010-01-18 01:14:55 PST ---
Changeset 340

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
January 31, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3600


Walter Bright <bugzilla@digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED


--- Comment #3 from Walter Bright <bugzilla@digitalmars.com> 2010-01-30 22:45:55 PST ---
fixed dmd 2.040

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------