这段代码的作用template <typename T> class CFunction; template <typename Res, typename Type> class CFunction<Res(Type)> { using InvokerType = Res (*)(Type); public: CFunction(InvokerType pFunc) : m_pFunc(pFunc) { } Res operator()(Type arg) const { return m_pFunc(arg); } private: InvokerType m_pFunc; };
时间: 2023-05-27 12:06:14 浏览: 144
cpp-C17标准库的大多数实用运行时类的前向声明
这段代码定义了一个模板类CFunction,其中模板参数T可以是任何类型,但是在特化模板CFunction<Res(Type)>中,T必须是一个函数类型,即T为返回类型为Res,参数类型为Type的函数类型。
特化模板CFunction<Res(Type)>中定义了一个别名InvokerType,它是一个指向函数的指针,指向的函数的返回类型为Res,参数类型为Type。
CFunction类的构造函数接受一个InvokerType类型的参数pFunc,并将其保存到私有成员变量m_pFunc中。
CFunction类还重载了函数调用运算符,使得CFunction对象可以像函数一样被调用,并将参数arg传递给保存的函数指针m_pFunc执行,并返回执行结果。
阅读全文