thankx but all of these are not working
On Monday, 15 September 2014 at 16:51:24 UTC, evilrat wrote:
On Monday, 15 September 2014 at 16:28:19 UTC, amparacha wrote:
Can anyone looks at the following code to fix it.I am having error when using pointers to functions with argument of type T.This is a small portion of a program doing a generic quick sort by passing a comparison function as an argument.

import std.stdio;


int main(){

return 0;
}

bool comp(T)(T left,T right){
//some comparison criteria
return false;
}


void sort(T)(T[]list,int left,int right)
{
int spiltPoint;
bool function(T)(T val1,T val2) ptr=∁
spiltPoint=partition(list,ptr,left,right);      
}

int partition(T)(T[]list,bool function(T)(T val1,T val2)ptr,int left,int right){

return 2;

}

this T function is just short form of template which expands to
----
template partition(T)
{
int partition(T[] list, bool function(T val1, T val2) ptr, int left, int right)
 {
  return 2;
 }
}
----
cannot alias template function, so in fact the closest thing is use alias template parameter. try this(not tested):
---------------
import std.stdio;


void main(){
cast(void)0;
}

bool comp(T)(T left, T right){
//some comparison criteria
return false;
}

void sort(T)(T[]list,int left,int right)
{
int spiltPoint;
spiltPoint=partition!(T, comp)(list,left,right);        
}

int partition(T, alias compFunc)(T[] list, int left, int right)
{
return 2;
}

alias compFunc(T) = bool function (T val1,T val2) ;
-----
the only problem(?) involving template alias makes this impossible(?) to call at run time(CTFE only)

Reply via email to