У меня много кода шаблона. Поскольку плохой код шаблона не вызывает ошибку компилятора, если он не скомпилирован, есть ли способ проверить, какие функции шаблона компилятор действительно «скомпилировал», а какие были полностью проигнорированы?
РЕДАКТИРОВАТЬ 2:
Если конкретный шаблон класса или шаблон функции создается один раз для любых типов параметров, тогда это нормально. Мне нужен список шаблонов функций / классов, которые никогда не создавались ни в какой форме.
Одним из конкретных примеров является следующий. Это две разные шаблонные функции, и я хотел бы знать, не создается ли ни одна из них, ни обе.
template <typename T_InputItr, typename T_Distance>
void advance( T_InputItr& aItr, T_Distance aN, bidirectional_iterator_tag )
template <typename T_InputItr, typename T_Distance>
void advance( T_InputItr& aItr, T_Distance aN, random_access_iterator_tag )
РЕДАКТИРОВАТЬ: В настоящее время для классов я создаю их экземпляры в файле .cpp
вручную следующим образом:
template TClass<int>;
для всех типов, которые меня интересуют. Это хорошо. Но это если я не забуду это сделать. Иногда мне нужно написать много небольших шаблонных классов / функций, где я забываю вручную создать экземпляры некоторых из шаблонов функций / классов , а позже узнаю об этом. Я бы хотел, чтобы компилятор сказал мне это.
В качестве альтернативы, если бы я мог получить список шаблонов функций / классов, экземпляры которых были созданы (для любого параметра), то я мог бы сравнить его с полным списком, который я мог бы найти в коде.
Еще одним преимуществом было бы «проверить», какие методы были скомпилированы в шаблонном классе, который использует свойства типов для выборочной компиляции определенных функций. Я хочу быть уверенным, что моя логика для выбора правильных функций верна, прежде чем двигаться дальше.