www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 1672] New: Literals should match template alias arguments

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1672

           Summary: Literals should match template alias arguments
           Product: D
           Version: 2.007
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla digitalmars.com
        ReportedBy: andrei metalanguage.com


Consider an implementation of a sort function with configurable comparison:

template sort(alias comparison)
{
   ... define a sort function ...
}

A candidate for "comparison" is a function, e.g.:

bool less(int a, int b) { return a < b; }
sort!(less)(array);

Let's say we want to make sort take a compile-time string that contains the
body of the comparison, such that:

sort!("a < b")(array);

has the same effect as the more verbose version above. (By convention, the
string names the compared objects "a" and "b".) The compiler does not accept
the string literal; it won't match a literal. What it does accept is:

static const string less = "a < b";
sort!(less)(array);

The problem is that we got back to the same verbosity as before. Since this is
likely to become a very useful idiom, the compiler should automatically
transform a compile-time value passed as an alias into an anonymous alias.


-- 
Nov 15 2007
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1672






What does this have over:

template sort(char[] comp)

are you hoping to be able to pass either a string or a function?


-- 
Nov 15 2007
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1672







 What does this have over:
 
 template sort(char[] comp)
 
 are you hoping to be able to pass either a string or a function?
Yes, the point is to pass either a string, a function, a delegate, or a struct/class, and have the sort template discern how to proceed with static if's. --
Nov 15 2007
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1672






How do you plan to pass delegates? I have wanted to pass local values to a
template but couldn't find a way to do it.


-- 
Nov 15 2007
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1672






Can we set this one to fixed?


-- 
Nov 12 2008
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1672


andrei metalanguage.com changed:

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






 Can we set this one to fixed?
 
Yah, I think so. --
Nov 13 2008