【发布时间】:2010-01-27 22:55:00
【问题描述】:
我有一个模板类,其中包含一个模板方法,提供两个模板参数 T 和 U。该操作非常昂贵,并且在分析中显示为 CPU 时间的主要用途。我可以对其进行一些优化,但仅限于 T == U 的情况(这是相当常见的),但是我不确定这样做的语法......
有问题的类和方法如下所示:
template<typename T>class Foo
{
public:
...
template<typename U>U bar()const;
};
Foo::bar 通常是从其他模板代码调用的,所以即使我创建了一个单独的方法(例如“T fastBar()const”),我也不知道 id 如何让其他模板代码调用它尽可能的版本...
我尝试为 T == U 创建显式特化,但 VC9 给了我错误
template<typename T>template<>T Foo<T>::bar<T>()const
错误 C2768: 'Foo::bar' : 非法使用显式模板参数
【问题讨论】:
标签: c++ optimization templates template-specialization