Sử dụng is_same
:
#include <type_traits>
template <typename T>
void foo()
{
if (std::is_same<T, animal>::value) { /* ... */ } // optimizable...
}
Thông thường, đó là một thiết kế hoàn toàn không thể thực hiện được và bạn thực sự muốn chuyên môn hóa :
template <typename T> void foo() { /* generic implementation */ }
template <> void foo<animal>() { /* specific for T = animal */ }
Cũng lưu ý rằng thật bất thường khi có các mẫu hàm với các đối số rõ ràng (không được suy luận). Nó không phải là chưa từng thấy, nhưng thường có những cách tiếp cận tốt hơn.