Могу ли я проверить, какие шаблоны функций были или не были созданы хотя бы один раз?

У меня много кода шаблона. Поскольку плохой код шаблона не вызывает ошибку компилятора, если он не скомпилирован, есть ли способ проверить, какие функции шаблона компилятор действительно «скомпилировал», а какие были полностью проигнорированы?

РЕДАКТИРОВАТЬ 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>;

для всех типов, которые меня интересуют. Это хорошо. Но это если я не забуду это сделать. Иногда мне нужно написать много небольших шаблонных классов / функций, где я забываю вручную создать экземпляры некоторых из шаблонов функций / классов , а позже узнаю об этом. Я бы хотел, чтобы компилятор сказал мне это.

В качестве альтернативы, если бы я мог получить список шаблонов функций / классов, экземпляры которых были созданы (для любого параметра), то я мог бы сравнить его с полным списком, который я мог бы найти в коде.

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

5
задан Samaursa 20 January 2012 в 02:50
поделиться