我已经获得了 enable_if 工作的代码,它允许我做一些很棒的事情,但我认为这会导致错误,因为下面显示的两种方法具有相同的方法签名。
任何人都知道为什么这是允许的?
#include <iostream>
#include <boost/type_traits>
template<bool T, class R = void>
struct enable_if{
typedef R type;
};
template<class R>
struct enable_if<false, R>{
};
template<class T>
typename enable_if<boost::is_pod<T>::value >::type print(const T& item){
std::cout << "T is a pod with the value: " << item << std::endl;
}
template<class T>
typename enable_if<!(boost::is_pod<T>::value) >::type print(const T& item){
std::cout << "T is not a pod with the value: " << item << std::endl;
}
int main(int argc, const char * argv[])
{
print(1);
return 0;
}