AFEPack
ThreadBase.h
浏览该文件的文档。
00001 
00138 template <typename Return
00139 #if ARG>=1 
00140 ,typename Arg1 
00141 #endif
00142 #if ARG>=2 
00143 ,typename Arg2 
00144 #endif
00145 #if ARG>=3 
00146 ,typename Arg3 
00147 #endif
00148 #if ARG>=4 
00149 ,typename Arg4 
00150 #endif
00151 #if ARG>=5 
00152 ,typename Arg5 
00153 #endif
00154 #if ARG>=6 
00155 ,typename Arg6 
00156 #endif
00157 #if ARG>=7 
00158 ,typename Arg7 
00159 #endif
00160 #if ARG>=8 
00161 ,typename Arg8
00162 #endif
00163 #if ARG>=9 
00164 ,typename Arg9
00165 #endif
00166 #if ARG>=10 
00167 ,typename Arg10
00168 #endif
00169 ,typename Class=NullThread>
00170 struct CLASSNAME 
00171 {
00172   public:
00173 
00174 typedef Return (*FunPtr)(
00175 #if ARG>=1 
00176                          Arg1 
00177 #endif
00178 #if ARG>=2 
00179                          ,Arg2 
00180 #endif
00181 #if ARG>=3 
00182                          ,Arg3 
00183 #endif
00184 #if ARG>=4 
00185                          ,Arg4 
00186 #endif
00187 #if ARG>=5 
00188                          ,Arg5 
00189 #endif
00190 #if ARG>=6 
00191                          ,Arg6 
00192 #endif
00193 #if ARG>=7 
00194                          ,Arg7
00195 #endif
00196 #if ARG>=8 
00197                          ,Arg8 
00198 #endif
00199 #if ARG>=9 
00200                          ,Arg9 
00201 #endif
00202 #if ARG>=10 
00203                          ,Arg10 
00204 #endif
00205                          );
00206 
00207   struct FunData 
00208   {
00209     public:
00210     FunPtr     fun_ptr;
00211 #if ARG>=1 
00212     Arg1 arg1;
00213 #endif
00214 #if ARG>=2 
00215     Arg2 arg2;
00216 #endif
00217 #if ARG>=3 
00218     Arg3 arg3;
00219 #endif
00220 #if ARG>=4 
00221     Arg4 arg4;
00222 #endif
00223 #if ARG>=5 
00224     Arg5 arg5;
00225 #endif
00226 #if ARG>=6 
00227     Arg6 arg6;
00228 #endif
00229 #if ARG>=7 
00230     Arg7 arg7;
00231 #endif
00232 #if ARG>=8 
00233     Arg8 arg8;
00234 #endif
00235 #if ARG>=9 
00236     Arg9 arg9;
00237 #endif
00238 #if ARG>=10 
00239     Arg10 arg10;
00240 #endif
00241     FunData(FunPtr _fun_ptr
00242 #if ARG>=1 
00243             ,Arg1 _arg1
00244 #endif
00245 #if ARG>=2 
00246             ,Arg2 _arg2
00247 #endif
00248 #if ARG>=3 
00249             ,Arg3 _arg3
00250 #endif
00251 #if ARG>=4 
00252             ,Arg4 _arg4
00253 #endif
00254 #if ARG>=5 
00255             ,Arg5 _arg5
00256 #endif
00257 #if ARG>=6 
00258             ,Arg6 _arg6
00259 #endif
00260 #if ARG>=7 
00261             ,Arg7 _arg7
00262 #endif
00263 #if ARG>=8 
00264             ,Arg8 _arg8
00265 #endif
00266 #if ARG>=9 
00267             ,Arg9 _arg9
00268 #endif
00269 #if ARG>=10 
00270             ,Arg10 _arg10
00271 #endif
00272             ) :
00273       fun_ptr(_fun_ptr)
00274 #if ARG>=1 
00275          ,arg1(_arg1)
00276 #endif
00277 #if ARG>=2 
00278          ,arg2(_arg2)
00279 #endif
00280 #if ARG>=3 
00281          ,arg3(_arg3)
00282 #endif
00283 #if ARG>=4 
00284          ,arg4(_arg4)
00285 #endif
00286 #if ARG>=5 
00287          ,arg5(_arg5)
00288 #endif
00289 #if ARG>=6 
00290          ,arg6(_arg6)
00291 #endif
00292 #if ARG>=7 
00293          ,arg7(_arg7)
00294 #endif
00295 #if ARG>=8 
00296          ,arg8(_arg8)
00297 #endif
00298 #if ARG>=9 
00299          ,arg9(_arg9)
00300 #endif
00301 #if ARG>=10 
00302          ,arg10(_arg10)
00303 #endif
00304     {};
00305     FunData(const FunData& _fd) :
00306       fun_ptr(_fd.fun_ptr)
00307 #if ARG>=1 
00308          ,arg1(_fd.arg1)
00309 #endif
00310 #if ARG>=2 
00311          ,arg2(_fd.arg2)
00312 #endif
00313 #if ARG>=3 
00314          ,arg3(_fd.arg3)
00315 #endif
00316 #if ARG>=4 
00317          ,arg4(_fd.arg4)
00318 #endif
00319 #if ARG>=5 
00320          ,arg5(_fd.arg5)
00321 #endif
00322 #if ARG>=6 
00323          ,arg6(_fd.arg6)
00324 #endif
00325 #if ARG>=7 
00326          ,arg7(_fd.arg7)
00327 #endif
00328 #if ARG>=8 
00329          ,arg8(_fd.arg8)
00330 #endif
00331 #if ARG>=9 
00332          ,arg9(_fd.arg9)
00333 #endif
00334 #if ARG>=10 
00335          ,arg10(_fd.arg10)
00336 #endif
00337     {};
00338     FunData& operator=(const FunData& _fd) 
00339 {
00340 fun_ptr = _fd.fun_ptr;
00341 #if ARG>=1 
00342  arg1 = _fd.arg1;
00343 #endif
00344 #if ARG>=2 
00345  arg2 = _fd.arg2;
00346 #endif
00347 #if ARG>=3 
00348  arg3 = _fd.arg3;
00349 #endif
00350 #if ARG>=4 
00351  arg4 = _fd.arg4;
00352 #endif
00353 #if ARG>=5 
00354  arg5 = _fd.arg5;
00355 #endif
00356 #if ARG>=6 
00357  arg6 = _fd.arg6;
00358 #endif
00359 #if ARG>=7 
00360  arg7 = _fd.arg7;
00361 #endif
00362 #if ARG>=8 
00363  arg8 = _fd.arg8;
00364 #endif
00365 #if ARG>=9 
00366  arg9 = _fd.arg9;
00367 #endif
00368 #if ARG>=10 
00369  arg10 = _fd.arg10;
00370 #endif
00371  return *this;
00372 };
00373     static void * thread_entry(void *arg_ptr) {
00374       FunData * mfd = reinterpret_cast<FunData *>(arg_ptr);
00375       (*(mfd->fun_ptr))(
00376 #if ARG>=1 
00377                             mfd->arg1
00378 #endif
00379 #if ARG>=2 
00380                             , mfd->arg2
00381 #endif
00382 #if ARG>=3 
00383                             , mfd->arg3
00384 #endif
00385 #if ARG>=4 
00386                             , mfd->arg4
00387 #endif
00388 #if ARG>=5 
00389                             , mfd->arg5
00390 #endif
00391 #if ARG>=6 
00392                             , mfd->arg6
00393 #endif
00394 #if ARG>=7 
00395                             , mfd->arg7
00396 #endif
00397 #if ARG>=8 
00398                             , mfd->arg8
00399 #endif
00400 #if ARG>=9 
00401                             , mfd->arg9
00402 #endif
00403 #if ARG>=10 
00404                             , mfd->arg10
00405 #endif
00406                           );
00407     return NULL;
00408   };
00409 
00410   };
00411 
00412     class ArgCollector
00413   {
00414   public:
00415     typedef FunData FunDataType;
00416     FunPtr fun_ptr;
00417 
00418     ArgCollector (FunPtr _fun_ptr_) {
00419       fun_ptr = _fun_ptr_;
00420     };
00421         
00422     FunData collectArgs (
00423 #if ARG>=1 
00424             Arg1 _arg1
00425 #endif
00426 #if ARG>=2 
00427             ,Arg2 _arg2
00428 #endif
00429 #if ARG>=3 
00430             ,Arg3 _arg3
00431 #endif
00432 #if ARG>=4 
00433             ,Arg4 _arg4
00434 #endif
00435 #if ARG>=5 
00436             ,Arg5 _arg5
00437 #endif
00438 #if ARG>=6 
00439             ,Arg6 _arg6
00440 #endif
00441 #if ARG>=7 
00442             ,Arg7 _arg7
00443 #endif
00444 #if ARG>=8 
00445             ,Arg8 _arg8
00446 #endif
00447 #if ARG>=9 
00448             ,Arg9 _arg9
00449 #endif
00450 #if ARG>=10 
00451             ,Arg10 _arg10
00452 #endif
00453             ) {
00454       return FunData(fun_ptr
00455 #if ARG>=1 
00456                      , _arg1
00457 #endif
00458 #if ARG>=2 
00459                      , _arg2
00460 #endif
00461 #if ARG>=3 
00462                      , _arg3
00463 #endif
00464 #if ARG>=4 
00465                      , _arg4
00466 #endif
00467 #if ARG>=5 
00468                      , _arg5
00469 #endif
00470 #if ARG>=6 
00471                      , _arg6
00472 #endif
00473 #if ARG>=7 
00474                      , _arg7
00475 #endif
00476 #if ARG>=8 
00477                      , _arg8
00478 #endif
00479 #if ARG>=9 
00480                      , _arg9
00481 #endif
00482 #if ARG>=10 
00483                      , _arg10
00484 #endif
00485                       );
00486     };
00487 
00488   };
00489 
00490 typedef Return (Class::*MemFunPtr)(
00491 #if ARG>=1 
00492                                    Arg1 
00493 #endif
00494 #if ARG>=2 
00495                                    ,Arg2 
00496 #endif
00497 #if ARG>=3 
00498                                    ,Arg3 
00499 #endif
00500 #if ARG>=4 
00501                                    ,Arg4 
00502 #endif
00503 #if ARG>=5 
00504                                    ,Arg5 
00505 #endif
00506 #if ARG>=6 
00507                                    ,Arg6 
00508 #endif
00509 #if ARG>=7 
00510                                    ,Arg7
00511 #endif
00512 #if ARG>=8 
00513                                    ,Arg8 
00514 #endif
00515 #if ARG>=9 
00516                                    ,Arg9 
00517 #endif
00518 #if ARG>=10 
00519                                    ,Arg10 
00520 #endif
00521                                    );
00522 
00523   struct MemFunData 
00524   {
00525     public:
00526     MemFunPtr     mem_fun_ptr;
00527     Class *       object;
00528 #if ARG>=1 
00529     Arg1 arg1;
00530 #endif
00531 #if ARG>=2 
00532     Arg2 arg2;
00533 #endif
00534 #if ARG>=3 
00535     Arg3 arg3;
00536 #endif
00537 #if ARG>=4 
00538     Arg4 arg4;
00539 #endif
00540 #if ARG>=5 
00541     Arg5 arg5;
00542 #endif
00543 #if ARG>=6 
00544     Arg6 arg6;
00545 #endif
00546 #if ARG>=7 
00547     Arg7 arg7;
00548 #endif
00549 #if ARG>=8 
00550     Arg8 arg8;
00551 #endif
00552 #if ARG>=9 
00553     Arg9 arg9;
00554 #endif
00555 #if ARG>=10 
00556     Arg10 arg10;
00557 #endif
00558     MemFunData(MemFunPtr _mem_fun_ptr
00559                ,Class * _object
00560 #if ARG>=1 
00561                ,Arg1 _arg1
00562 #endif
00563 #if ARG>=2 
00564                ,Arg2 _arg2
00565 #endif
00566 #if ARG>=3 
00567                ,Arg3 _arg3
00568 #endif
00569 #if ARG>=4 
00570                ,Arg4 _arg4
00571 #endif
00572 #if ARG>=5 
00573                ,Arg5 _arg5
00574 #endif
00575 #if ARG>=6 
00576                ,Arg6 _arg6
00577 #endif
00578 #if ARG>=7 
00579                ,Arg7 _arg7
00580 #endif
00581 #if ARG>=8 
00582                ,Arg8 _arg8
00583 #endif
00584 #if ARG>=9 
00585                ,Arg9 _arg9
00586 #endif
00587 #if ARG>=10 
00588                ,Arg10 _arg10
00589 #endif
00590                ) :
00591       mem_fun_ptr(_mem_fun_ptr)
00592          ,object(_object)
00593 #if ARG>=1 
00594          ,arg1(_arg1)
00595 #endif
00596 #if ARG>=2 
00597          ,arg2(_arg2)
00598 #endif
00599 #if ARG>=3 
00600          ,arg3(_arg3)
00601 #endif
00602 #if ARG>=4 
00603          ,arg4(_arg4)
00604 #endif
00605 #if ARG>=5 
00606          ,arg5(_arg5)
00607 #endif
00608 #if ARG>=6 
00609          ,arg6(_arg6)
00610 #endif
00611 #if ARG>=7 
00612          ,arg7(_arg7)
00613 #endif
00614 #if ARG>=8 
00615          ,arg8(_arg8)
00616 #endif
00617 #if ARG>=9 
00618          ,arg9(_arg9)
00619 #endif
00620 #if ARG>=10 
00621          ,arg10(_arg10)
00622 #endif
00623     {};
00624     MemFunData(const MemFunData& _mfd) :
00625       mem_fun_ptr(_mfd.mem_fun_ptr)
00626          ,object(_mfd.object)
00627 #if ARG>=1 
00628          ,arg1(_mfd.arg1)
00629 #endif
00630 #if ARG>=2 
00631          ,arg2(_mfd.arg2)
00632 #endif
00633 #if ARG>=3 
00634          ,arg3(_mfd.arg3)
00635 #endif
00636 #if ARG>=4 
00637          ,arg4(_mfd.arg4)
00638 #endif
00639 #if ARG>=5 
00640          ,arg5(_mfd.arg5)
00641 #endif
00642 #if ARG>=6 
00643          ,arg6(_mfd.arg6)
00644 #endif
00645 #if ARG>=7 
00646          ,arg7(_mfd.arg7)
00647 #endif
00648 #if ARG>=8 
00649          ,arg8(_mfd.arg8)
00650 #endif
00651 #if ARG>=9 
00652          ,arg9(_mfd.arg9)
00653 #endif
00654 #if ARG>=10 
00655          ,arg10(_mfd.arg10)
00656 #endif
00657     {};
00658     MemFunData& operator=(const MemFunData& _mfd)
00659     {
00660       mem_fun_ptr = _mfd.mem_fun_ptr;
00661       object = _mfd.object;
00662 #if ARG>=1 
00663       arg1 = _mfd.arg1;
00664 #endif
00665 #if ARG>=2 
00666       arg2 = _mfd.arg2;
00667 #endif
00668 #if ARG>=3 
00669       arg3 = _mfd.arg3;
00670 #endif
00671 #if ARG>=4 
00672       arg4 = _mfd.arg4;
00673 #endif
00674 #if ARG>=5 
00675       arg5 = _mfd.arg5;
00676 #endif
00677 #if ARG>=6 
00678       arg6 = _mfd.arg6;
00679 #endif
00680 #if ARG>=7 
00681       arg7 = _mfd.arg7;
00682 #endif
00683 #if ARG>=8 
00684       arg8 = _mfd.arg8;
00685 #endif
00686 #if ARG>=9 
00687       arg9 = _mfd.arg9;
00688 #endif
00689 #if ARG>=10 
00690       arg10 = _mfd.arg10;
00691 #endif
00692       return *this;
00693     };
00694     static void * thread_entry(void *arg_ptr) {
00695       MemFunData * mfd = reinterpret_cast<MemFunData *>(arg_ptr);
00696       ((mfd->object)->*(mfd->mem_fun_ptr))(
00697 #if ARG>=1 
00698                                            mfd->arg1
00699 #endif
00700 #if ARG>=2 
00701                                            , mfd->arg2
00702 #endif
00703 #if ARG>=3 
00704                                            , mfd->arg3
00705 #endif
00706 #if ARG>=4 
00707                                            , mfd->arg4
00708 #endif
00709 #if ARG>=5 
00710                                            , mfd->arg5
00711 #endif
00712 #if ARG>=6 
00713                                            , mfd->arg6
00714 #endif
00715 #if ARG>=7 
00716                                            , mfd->arg7
00717 #endif
00718 #if ARG>=8 
00719                                            , mfd->arg8
00720 #endif
00721 #if ARG>=9 
00722                                            , mfd->arg9
00723 #endif
00724 #if ARG>=10 
00725                                            , mfd->arg10
00726 #endif
00727                                            );
00728       return NULL;
00729     };
00730 
00731   };
00732 
00733     class MemArgCollector
00734   {
00735   public:
00736     typedef MemFunData FunDataType;
00737     MemFunPtr mem_fun_ptr;
00738 
00739     MemArgCollector (MemFunPtr _mem_fun_ptr_) {
00740       mem_fun_ptr = _mem_fun_ptr_;
00741     };
00742         
00743     MemFunData collectArgs (Class * object
00744 #if ARG>=1 
00745             ,Arg1 _arg1
00746 #endif
00747 #if ARG>=2 
00748             ,Arg2 _arg2
00749 #endif
00750 #if ARG>=3 
00751             ,Arg3 _arg3
00752 #endif
00753 #if ARG>=4 
00754             ,Arg4 _arg4
00755 #endif
00756 #if ARG>=5 
00757             ,Arg5 _arg5
00758 #endif
00759 #if ARG>=6 
00760             ,Arg6 _arg6
00761 #endif
00762 #if ARG>=7 
00763             ,Arg7 _arg7
00764 #endif
00765 #if ARG>=8 
00766             ,Arg8 _arg8
00767 #endif
00768 #if ARG>=9 
00769             ,Arg9 _arg9
00770 #endif
00771 #if ARG>=10 
00772             ,Arg10 _arg10
00773 #endif
00774             ) {
00775       return MemFunData(mem_fun_ptr
00776                         ,object
00777 #if ARG>=1 
00778                         , _arg1
00779 #endif
00780 #if ARG>=2 
00781                         , _arg2
00782 #endif
00783 #if ARG>=3 
00784                         , _arg3
00785 #endif
00786 #if ARG>=4 
00787                         , _arg4
00788 #endif
00789 #if ARG>=5 
00790                         , _arg5
00791 #endif
00792 #if ARG>=6 
00793                         , _arg6
00794 #endif
00795 #if ARG>=7 
00796                         , _arg7
00797 #endif
00798 #if ARG>=8 
00799                         , _arg8
00800 #endif
00801 #if ARG>=9 
00802                         , _arg9
00803 #endif
00804 #if ARG>=10 
00805                         , _arg10
00806 #endif
00807                         );
00808     };
00809   };
00810 };
00811 
00812 template <typename Return
00813 #if ARG>=1
00814 ,typename Arg1
00815 #endif
00816 #if ARG>=2
00817 ,typename Arg2
00818 #endif
00819 #if ARG>=3
00820 ,typename Arg3
00821 #endif
00822 #if ARG>=4
00823 ,typename Arg4
00824 #endif
00825 #if ARG>=5
00826 ,typename Arg5
00827 #endif
00828 #if ARG>=6
00829 ,typename Arg6
00830 #endif
00831 #if ARG>=7 
00832 ,typename Arg7 
00833 #endif
00834 #if ARG>=8 
00835 ,typename Arg8
00836 #endif
00837 #if ARG>=9 
00838 ,typename Arg9
00839 #endif
00840 #if ARG>=10 
00841 ,typename Arg10
00842 #endif
00843 >
00844 typename CLASSNAME<Return
00845 #if ARG>=1
00846 , Arg1
00847 #endif
00848 #if ARG>=2
00849 , Arg2
00850 #endif
00851 #if ARG>=3
00852 , Arg3
00853 #endif
00854 #if ARG>=4
00855 , Arg4
00856 #endif
00857 #if ARG>=5
00858 , Arg5
00859 #endif
00860 #if ARG>=6
00861 , Arg6
00862 #endif
00863 #if ARG>=7
00864 , Arg7
00865 #endif
00866 #if ARG>=8
00867 , Arg8
00868 #endif
00869 #if ARG>=9
00870 , Arg9
00871 #endif
00872 #if ARG>=10
00873 , Arg10
00874 #endif
00875 >::ArgCollector encapsulate(Return (*_fun_ptr)(
00876 #if ARG>=1
00877 Arg1
00878 #endif
00879 #if ARG>=2
00880 , Arg2
00881 #endif
00882 #if ARG>=3
00883 , Arg3
00884 #endif
00885 #if ARG>=4
00886 , Arg4
00887 #endif
00888 #if ARG>=5
00889 , Arg5
00890 #endif
00891 #if ARG>=6
00892 , Arg6
00893 #endif
00894 #if ARG>=7
00895 , Arg7
00896 #endif
00897 #if ARG>=8
00898 , Arg8
00899 #endif
00900 #if ARG>=9
00901 , Arg9
00902 #endif
00903 #if ARG>=10
00904 , Arg10
00905 #endif
00906 )) {
00907     return typename CLASSNAME<Return
00908 #if ARG>=1
00909 , Arg1
00910 #endif
00911 #if ARG>=2
00912 , Arg2
00913 #endif
00914 #if ARG>=3
00915 , Arg3
00916 #endif
00917 #if ARG>=4
00918 , Arg4
00919 #endif
00920 #if ARG>=5
00921 , Arg5
00922 #endif
00923 #if ARG>=6
00924 , Arg6
00925 #endif
00926 #if ARG>=7
00927 , Arg7
00928 #endif
00929 #if ARG>=8
00930 , Arg8
00931 #endif
00932 #if ARG>=9
00933 , Arg9
00934 #endif
00935 #if ARG>=10
00936 , Arg10
00937 #endif
00938 >::ArgCollector(_fun_ptr);
00939 };
00940 
00941 template <typename Return
00942 #if ARG>=1
00943 ,typename Arg1
00944 #endif
00945 #if ARG>=2
00946 ,typename Arg2
00947 #endif
00948 #if ARG>=3
00949 ,typename Arg3
00950 #endif
00951 #if ARG>=4
00952 ,typename Arg4
00953 #endif
00954 #if ARG>=5
00955 ,typename Arg5
00956 #endif
00957 #if ARG>=6
00958 ,typename Arg6
00959 #endif
00960 #if ARG>=7 
00961 ,typename Arg7 
00962 #endif
00963 #if ARG>=8 
00964 ,typename Arg8
00965 #endif
00966 #if ARG>=9 
00967 ,typename Arg9
00968 #endif
00969 #if ARG>=10 
00970 ,typename Arg10
00971 #endif
00972 ,typename Class>
00973 typename CLASSNAME<Return
00974 #if ARG>=1
00975 , Arg1
00976 #endif
00977 #if ARG>=2
00978 , Arg2
00979 #endif
00980 #if ARG>=3
00981 , Arg3
00982 #endif
00983 #if ARG>=4
00984 , Arg4
00985 #endif
00986 #if ARG>=5
00987 , Arg5
00988 #endif
00989 #if ARG>=6
00990 , Arg6
00991 #endif
00992 #if ARG>=7
00993 , Arg7
00994 #endif
00995 #if ARG>=8
00996 , Arg8
00997 #endif
00998 #if ARG>=9
00999 , Arg9
01000 #endif
01001 #if ARG>=10
01002 , Arg10
01003 #endif
01004 ,Class>::MemArgCollector encapsulate(Return (Class::*_mem_fun_ptr)(
01005 #if ARG>=1
01006 Arg1
01007 #endif
01008 #if ARG>=2
01009 , Arg2
01010 #endif
01011 #if ARG>=3
01012 , Arg3
01013 #endif
01014 #if ARG>=4
01015 , Arg4
01016 #endif
01017 #if ARG>=5
01018 , Arg5
01019 #endif
01020 #if ARG>=6
01021 , Arg6
01022 #endif
01023 #if ARG>=7
01024 , Arg7
01025 #endif
01026 #if ARG>=8
01027 , Arg8
01028 #endif
01029 #if ARG>=9
01030 , Arg9
01031 #endif
01032 #if ARG>=10
01033 , Arg10
01034 #endif
01035 )) {
01036   return typename CLASSNAME<Return
01037 #if ARG>=1
01038 , Arg1
01039 #endif
01040 #if ARG>=2
01041 , Arg2
01042 #endif
01043 #if ARG>=3
01044 , Arg3
01045 #endif
01046 #if ARG>=4
01047 , Arg4
01048 #endif
01049 #if ARG>=5
01050 , Arg5
01051 #endif
01052 #if ARG>=6
01053 , Arg6
01054 #endif
01055 #if ARG>=7
01056 , Arg7
01057 #endif
01058 #if ARG>=8
01059 , Arg8
01060 #endif
01061 #if ARG>=9
01062 , Arg9
01063 #endif
01064 #if ARG>=10
01065 , Arg10
01066 #endif
01067 ,Class>::MemArgCollector(_mem_fun_ptr);
01068 };
01069 
01070