Is the `result_of` [type trait](http://en.cppreference.com/w/cpp/types/result_of) implementable with pre C++11 tools?

No need for variadic arguments, static implementations for 1, 2, 3 ... args will suffice

attempts
--------

I know that I can do this

```
template<typename Ret, typename Arg, Ret (F)(Arg)>
struct result_of1 // result of unary function
{
    typedef Ret type;  
};

int func(int&); 
result_of1<int, int&, func>::type a; 

```

From here it seems that if I had a way to defer the `func`, say a deducable context, an extra layer, I would be able to pass a function and split it to its components : `return type, arg type, and function type` just by using the function type. 

Unluckily the class specialization process does not pose a deducable context ie I can't do the following

```
template<>
struct result_of1<Ret F(Arg), Ret, Arg> {}; 

```

provide just the `F` and have the rest deduced, so maybe filtering the type through an argument to a function would be a solution but I can't get my mind around it.