std::result_of again
passing sugar unit tests