??C++????????????????????????????
???????????? ???????[ 2013/4/24 10:02:45 ] ????????
??????????????????return_type??void????????з?????????????????????????????????????????????
template<typename first_type?? typename second_type>
class CEvent<void?? first_type?? second_type>
{
public:
//other function
//....
void operator()(first_type p1?? second_type p2)
{
//...
//invoker(p1?? p2);
return;
}
};
??????????????????????operator()?????????????return_type??????????????????????????????
???????????????????????????????????
??????????????????μ?????????
template<typename T>
struct IsVoid
{
enum { value = false };
};
template<>
struct IsVoid<void>
{
enum { value = true };
};
template<typename return_type?? typename first_type?? typename second_type>
class CEvent
{
public:
other function
....
return_type operator()(first_type p1?? second_type p2)
{
if(IsVoid<return_type>::value)
{
cout << "return type is void" << endl;
//...
//invoker(p1?? p2);
}
else
{
cout << "return type is not void" << endl;
return_type ret = return_type();
//...
//ret = invoker(p1?? p2);
return ret;
}
}
};
??????????????????????????if????????????????return_type??void??????????????????
???????????????????????????if???????????????????????????????
template<typename T>
struct IsVoid
{
enum { value = false };
};
template<>
struct IsVoid<void>
{
enum { value = true };
};
template<int v>
class Int2Type
{
enum {value = v };
};
template<typename return_type?? typename first_type?? typename second_type>
class CEvent
{
public:
//other function
//....
return_type InvokerImpl(first_type p1?? second_type p2?? Int2Type<true>)
{
cout << "return type is void" << endl;
//...
//invoker(p1?? p2);
}
return_type InvokerImpl(first_type p1?? second_type p2?? Int2Type<false>)
{
cout << "return type is not void" << endl;
return_type ret = return_type();
//...
//ret = invoker(p1?? p2);
return ret;
}
return_type operator()(first_type p1?? second_type p2)
{
return InvokerImpl(p1?? p2?? Int2Type<IsVoid<return_type>::value>());
}
};
??????????????????????????????????????????????bool??????????????????ò?????????????????
??????????£?????????????????????????????????????????????????????????C++??????????????????????????????C++??????????????????(C++11)??????????C++???????ж?????????????Щ????????е?????е??????е??Ч????е??Ч?? ????????????????C++???????????????Ч??????????
?????????????C++ templates???????д???????????
??????

???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11