Как определить, является ли объект C++ значением time_t, в отличие от интегрального типа time_t, как?Как определить, является ли объект C++ time_t
Я специально хочу шаблон специализировать функцию,
template <typename T> void myFunction(T val);
template<> void myFunction<time_t>(time_t val);
таким образом, что неспециализированная функция вызывается, когда интегральный тип, который time_t определяются как получает передаются.
Моя реализация STL определяет time_t
как long
, поэтому myFunction(42L)
называет специализацию time_t. Как я могу это предотвратить?
Я пробовал специализацию long
, что приводит к ошибке компиляции (тело уже определено). Я также пробовал rtti, typeid(time_t).name()
возвращает "long"
.
Как я могу различать time_t
, а тип интеграла определяется как, и/или шаблон специализируется на time_t, так что его интегральный тип не переходит к специализации?
Предпочтительный способ сделать это с помощью шаблонов, но я бы принял любое решение, время выполнения или время компиляции.
Возможно, вас заинтересует [реализация сильных typedefs, предоставленных доктором Доббсом] (http://drdobbs.com/184401633) –
Бен, я бы хотел, чтобы это было ответом .. – sarnold