我有一个C ++模板函数可以打印数字。
它适用于所有内容,除非我使用char
类型的数据。
我希望char
打印为int
,但如果我在模板函数中明确地转换它,那么我将失去float
类型的精度。
我希望能够说:
template<class T> bob(T a){
cout<<if_char_make_int(a)<<endl;
}
但我不知道该怎么做,或者是否有可能。
有什么想法吗?
答案 0 :(得分:4)
template<class T> void bob(T a){
cout<< a <<endl;
}
template<> void bob(char a){
cout<< static_cast<int>(a) <<endl;
}
有关详情,请参阅此处http://www.cplusplus.com/doc/tutorial/templates/(模板专业化)
希望有所帮助
答案 1 :(得分:2)
template<class T> void bob(T a){
std::cout
<< typename boost::mpl::if_<boost::is_same<char, T>, int, T>::type(a)
<< std::endl;
}