1. Should try to remove any reference so we get a proper value type 2. it's result_of(const T&) not result_of(T)