假设我有一个定义为的模板类:
template < typename A, typename B >
class something { ... }
如何测试A和B类型是否相同?我知道这可以在运行时使用typeid来完成,但我确实需要将其作为编译时测试。
另外,如果类型A和类型B相等,我该如何专门化该类?
在现实世界中,A将是某种STL容器,例如std::string,而B将是char或wchar_t。在内部,我已经检查了容器的value_type(如果不是预期的,则编译错误)。如果B与容器value_type相同,则该类中的大多数代码将变得多余。
最佳答案
正是这样,专门化:
template <typename A>
class something<A,A> { ... }
模板将模式匹配用于其参数列表,就像在许多功能编程语言中一样。
您可以使用
std::is_same
,也可以使用如上所述的特化。这取决于您的确切用例。关于c++ - 测试模板参数是否相等,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17486976/