我想知道是否有可能在Centos 5.5版上的gcc 4.1.2上模拟boost,tr1 is_pointer功能。如果有可能,我会欢迎有关如何做到这一点的建议?
答案 0 :(得分:5)
诀窍在于专业化:
#include <iostream>
template <typename T>
struct is_pointer {
enum { value = 0 };
};
template <typename T>
struct is_pointer<T*> {
enum { value = 1 };
};
template <typename T>
bool ptr_test(const T&) {
return is_pointer<T>::value;
}
int main() {
int *ptr;
const int *ptr2;
int a;
double b;
std::cout << "ptr:" << ptr_test(ptr) << std::endl;
std::cout << "ptr2:" << ptr_test(ptr2) << std::endl;
std::cout << "a:" << ptr_test(a) << std::endl;
std::cout << "b:" << ptr_test(b) << std::endl;
}
(按照预期在CentOS 5.3上运行,使用gcc 4.1.2)