При определении шаблона функции экземпляры параметров шаблона, как правило, неизвестны. Признаки типа можно использовать для получения некоторой информации во время компиляции. Например, вот тривиальное применение is_pointer
:
template <typename T>
void foo(T p) { cout << is_pointer<T>::value << endl; }
У меня такой вопрос: бывает ли когда-нибудь ситуация в не шаблонной функции, когда функции времени компиляции, подобные трейтам, могут предоставить полезную информацию?