Diferença entre std :: result_of e decltype

Tenho alguns problemas para entender a necessidade de std::result_ofem C ++ 0x. Se bem entendi, result_ofé usado para obter o tipo resultante de invocar um objeto de função com certos tipos de parâmetros. Por exemplo: template <typename F, typename Arg> typename