gpt4 book ai didi

c++ - 减少 C++ 中的模板化类参数

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:24 26 4
gpt4 key购买 nike

我有这样一个类:

template <unsigned int A, unsigned int B>
class Foo { ... };

Foo 需要一个名为 bar() 的方法,但我需要专门化它。对于一个案例,当 A == B 时,我希望它做一件事,否则做其他事情。我可以在不向函数中写入 if 语句的情况下执行此操作吗?喜欢:

Foo<A, A>::bar() { ... } and Foo<A, B>::bar() { ... }

最佳答案

你可以部分特化你的类:

#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);
}

关于c++ - 减少 C++ 中的模板化类参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37075010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com