【发布时间】:2016-03-30 21:25:18
【问题描述】:
假设我有以下代码:
template<typename K, typename V>
int Hash<K, V>::hf(const K& key)
{
if(K == typeid(string))
{
return MurmurHash2(key.c_str(), key.size());
}
else
{
return key*2654435761;
}
}
有可能以某种方式做到这一点吗?如果没有,您能推荐一种方法来完成同样的事情吗?
【问题讨论】:
-
模板专业化?
-
@isedev,我更喜欢重载。
-
@isedev 你能举一个我以前从未使用过的模板专业化的例子吗?
-
@SergeyA:当
K不是string(内联和优化分开)时,重载不会引入不必要的代码吗? -
@Iriketurtles 这可能有助于解释isedev 所写的内容:en.cppreference.com/w/cpp/language/template_specialization
标签: c++ template-classes