我目前必须优化另一个程序员的代码。他给我留下了很多模板类,我想利用英特尔 IPP-Library 中的函数来加速计算。问题是,大多数时候这些函数要求您知道您使用的是什么数据类型。所以我想重写模板,以便在可以优化操作的情况下使用专门的代码。如果它不能,它应该回退到原始代码。
问题是我需要检查是否正在使用某种数据类型,但我不知道该怎么做。
一个例子。我想做这样的事情:
template < class Elem > class Array1D
{
Array1D<Elem>& operator += (const Elem& a)
{
if (typeof(Elem) == uchar)
{
// use special IPP operation here
}
else
{
// fall back to default behaviour
}
}
关于如何做到这一点有什么想法吗?最好没有其他库的帮助。
谢谢
最佳答案
在我看来,您的用例是 Template Specialization 的完美场景.
关于c++ - C++ 模板中的特殊情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9001638/