Как проверить, какой специализированный шаблон скомпилирован в - PullRequest
2 голосов
/ 25 сентября 2011

У меня есть шаблонная функция, которая также специализируется на встроенных типах (int, float). Есть ли способ показать, какие функции используются, а какие исключены компилятором, во время компиляции ?? Возможно, с помощью #pragma ??

template<typename T>
int func(T val)
{
 ...
}

template<>
int func<float>(float val)
{
 ...
}

// etc

1 Ответ

1 голос
/ 26 сентября 2011

Ваш лучший вариант - просто оставить все функции неопределенными и посмотреть, какие ошибки выдает вам компилятор, когда он пытается создать экземпляр функции шаблона. Если вам нужно сделать это несколько раз, возможно, установка #ifdef вокруг этого кода позволит создать «выгрузку использованных функций». Оттуда это будет простой сценарий оболочки или что-то, чтобы вытащить типы функций, созданных из журнала ошибок компилятора.

В качестве альтернативы, вы можете добавить ошибку компиляции на основе параметра шаблона:

template<typename T>
int func(T val)
{
    T::this_version_is_being_included;
}
...