return type deduction now with result_of

as suggested by https://github.com/n00btime
return type deduction now uses std::result_of
which allows return type deduction for pointer
to members (and looks cleaner anyway).