xxxxxxxxxx
import std.experimental.all;
size_t myHashFunction(int a) { return cast(size_t) a; }
void main()
{
auto b = new B!(int, myHashFunction);
}
template conditionMet(alias HashF)
{
enum conditionMet = conditionOnInput!HashF && conditionOnOutput!HashF;
}
template conditionOnInput(alias HashF)
{
enum conditionOnInput = Parameters!HashF.length == 1 && is(Parameters!HashF[0] == int);
}
template conditionOnOutput(alias HashF)
{
enum conditionOnOutput = is(ReturnType!HashF == size_t);
}
class B(KeyT, alias HashF) if(conditionMet!HashF)
{ }