v.176

std.bindっていうboost::bindをインスパイアしたライブラリが出来たみたいです。

import std.bind;
import std.stdio;
import internal.qsort;
void sort(T,Cmp)(T[]a,Cmp cmp){
	auto ti = new class TypeInfo{
		size_t tsize(){return T.sizeof;}
		int compare(void*a,void*b){return cmp(*cast(T*)a,*cast(T*)b);}
		int equals(void*a,void*b){return compare(a,b)==0;}};
	Array x;x.ptr = a.ptr;x.length = a.length;
	_adSort(x,ti);
}
int compare(T)(T a,T b){return typeid(T).compare(&a,&b);}
void main(){
	auto x = [2,3,1];
	sort(x,&compare!(int)); // 昇順でsort
	writefln(x);
	sort(x,bind(&compare!(int),_1,_0));//降順でsort
	writefln(x);
}

D言語はなんか関数型っぽい機能がどんどん入っていってるなぁ。


あと,さりげなくstd.bindの中でTupleが定義されてますけど、
Tupleは汎用性が非常に高いですし、bindとは独立で提供してほしいなぁ。