Как я могу определить, является ли объект C ++ time_t, в отличие от целочисленного типа 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 так, чтобы его целочисленный тип неполучить специализацию?
Способ сделать это с помощью шаблонов был бы предпочтительнее, но я бы принял любое решение, во время выполнения или во время компиляции.