c++ - C++ 模板中的特殊情况

标签 c++ template-specialization

我目前必须优化另一个程序员的代码。他给我留下了很多模板类,我想利用英特尔 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/

相关文章:

c++ - 仅为某些 std::vector<T2> 类型启用模板

c++ - 作为非类型参数的局部变量,具有模板规范

c++ - XCode 自动停用断点

c++ - 通过模板特化的依赖注入(inject)

c++ - 我可以使用别名模板专门化一个类模板吗?

c++ - 替换字符会增加一个字符

c++ - 专用模板函数与不带模板关键字的专用模板函数

C++ 数组大小声明和常量

android - NDK、LOCAL_EXPORT_C_INCLUDES 未按预期工作

c++ - 如何读取 UCS-2 文件?