64,282
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
#include <boost\utility.hpp>
#include <boost\type_traits.hpp>
// stl
template<class T>
class data_processor
{
public:
data_processor(){}
double process(const T& v1, const T& v2, const T& v3)
{
cout << "normal process" << endl;
return 1.0;
}
};
template<>
class data_processor<int>
{
public:
data_processor(){}
double process(const int& v1, const int& v2, const int& v3)
{
cout << "int process" << endl;
return 1.0;
}
};
template<>
class data_processor<double>
{
public:
data_processor(){}
double process(const double& v1, const double& v2, const double& v3)
{
cout << "double process" << endl;
return 1.0;
}
};
// boost
//template<class T, class Enable=void>
//class data_processor
//{
//public:
// data_processor(){}
// double process(const T& v1, const T& v2, const T& v3)
// {
// cout << "normal process" << endl;
// return 1.0;
// }
//};
//
//template<class T>
//class data_processor<T, typename boost::enable_if<boost::is_integral<T> >::type>
//{
//public:
// data_processor(){}
// double process(const T& v1, const T& v2, const T& v3)
// {
// cout << "int process" << endl;
// return 1.0;
// }
//};
//
//template<class T>
//class data_processor<T, typename boost::enable_if_c<boost::is_float<T>::value>::type>
//{
//public:
// data_processor(){}
// double process(const T& v1, const T& v2, const T& v3)
// {
// cout << "double process" << endl;
// return 1.0;
// }
//};
int _tmain(int argc, _TCHAR* argv[])
{
data_processor<int> d_processor;
d_processor.process(1,2,3);
}