模板特化的一个例子

xiaoxiao2021-02-27  238

//   test.cpp //   xp   +   vc-7_1 //   cl   -EHsc   test.cpp #include   <iostream> template <typename   MF> class   delegate; template <class   R,   class   T,   class   P> class   delegate <R   (T::*)(P)>   { public:     delegate(T   &   t,   R   (T::*fn)(P),   P   const   &   p)         :   t_(t),             fn_(fn),             p_(p)   {   }     R   call()   {         return   (t_.*fn_)(p_);     } private:     T   &   t_;     R   (T::*fn_)(P);     P   p_; }; //   -------- class   test   { public:     double   foo(int   x)   {         return   static_cast <double> (x);       } }; int   main()   {     delegate <double   (test::*)(int)>   d(test(),   &test::foo,   100);     std::cout   < <   d.call()   < <   std::endl;     return   0; }
转载请注明原文地址: https://www.6miu.com/read-8840.html

最新回复(0)