Эмуляция is_pointer с помощью gcc версии 4.1.2 - PullRequest
2 голосов
/ 11 февраля 2011

Мне было интересно, можно ли имитировать функциональность boost, tr1 is_pointer на gcc 4.1.2 на Centos версии 5.5. Если это возможно, я бы приветствовал предложения о том, как это сделать?

1 Ответ

5 голосов
/ 11 февраля 2011

Хитрость в специализации:

#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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...