我有一个这样的课:
template <unsigned int A, unsigned int B>
class Foo { ... };
Run Code Online (Sandbox Code Playgroud)
Foo需要一个名为bar()的方法,但我需要专门化它.对于一个案例,当A == B时,我希望它做一件事,否则就是其他事情.如果不在函数中编写if语句,我可以这样做吗?喜欢:
Foo<A, A>::bar() { ... } and Foo<A, B>::bar() { ... }
Run Code Online (Sandbox Code Playgroud)
你可以部分专门化你的课程:
#include<cassert>
template<typename A, typename B>
struct S {
void f(int i) { assert(i == 42); }
};
template<typename A>
struct S<A, A> {
void f(int i) { assert(i == 0); }
};
int main() {
S<int, double> s1;
S<int, int> s2;
s1.f(42);
s2.f(0);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |