У меня много шаблонного кода. Поскольку плохой код шаблона не выдает ошибку компилятора, если он не скомпилирован, есть ли способ проверить, какие функции шаблона компилятор фактически «скомпилировал», а какие вообще были проигнорированы?
РЕДАКТИРОВАТЬ 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 )
EDIT: В настоящее время для классов я создаю экземпляры в файле .cpp
вручную следующим образом:
template TClass<int>;
для всех типов, которые меня интересуют. Это хорошо. Но это если я не забуду это сделать. Иногда мне нужно написать множество небольших шаблонных классов/функций, где я забываю создать экземпляр некоторых из шаблонов функций/классов вручную и выясняю это позже. Я хотел бы, чтобы компилятор сказал мне это.
В качестве альтернативы, если бы я мог получить список шаблонов функций/классов, которые были созданы (для любого параметра), я мог бы сравнить его с полным списком, который я мог бы найти в коде.
Еще одним преимуществом будет "проверка", какие методы были скомпилированы в классе шаблона, который использует признаки типа для выборочной компиляции определенных функций. Прежде чем двигаться дальше, я хочу убедиться, что моя логика выбора правильных функций верна.