これを用いて、関数オブジェクトの戻り値型を取得するようにすることでcalculusを修正した:template<classObj>classcalculus_ver2{Objmember;public:template<classArg>typenameresult_of<Obj(Arg)>::typeoperator()(Arg&a)const{returnmember(a);}};このようにすることで、関数オブジェクトcalculus_ver2<confused>の実体化の際に、型変換は発生しない。
底下，CalculusVer2物件使用std::result_of物件来推导其仿函式的回返值型别：template<classObj>classCalculusVer2{public:template<classArg>typenamestd::result_of<Obj(Arg)>::typeoperator()(Arg&a)const{returnmember(a);}private:Objmember;};如此一来，在实体化CalculusVer2<Confused>其仿函式时，不会有型别转换，警告或是错误发生。