使用gcc 4.1.2版仿真is_pointer

时间:2011-02-11 17:28:00

标签: c++ linux gcc

我想知道是否有可能在Centos 5.5版上的gcc 4.1.2上模拟boost,tr1 is_pointer功能。如果有可能,我会欢迎有关如何做到这一点的建议?

1 个答案:

答案 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)