gpt4 book ai didi

c++ 部分特化 : How can I specialize this template 到此模板<类 T1>?

转载 作者:太空狗 更新时间:2023-10-29 20:16:12 25 4
gpt4 key购买 nike

#include <iostream>
using namespace std;

template <class T1, class T2>
class A {
public:
void taunt() { cout << "A"; }
};

template <class T1>
class A<T1, T1> {
public:
void taunt() { cout << "B"; }
};

class B {};

class C {};

int main (int argc, char * const argv[]) {

A<B> a;

return 0;
}

如何将我的双参数模板转换为单参数模板?

上面的代码会在 'A a;' 上给出一个编译器错误对于“错误数量的模板参数”。

最佳答案

模板特化不能用于减少模板参数的数量,为此您应该对某些参数使用默认值。

因此,为了只允许使用一个参数,并使该用法符合您的专业要求,您需要为第二个参数设置一个默认值,它与第一个参数相同:

#include <iostream>
using namespace std;

template <class T1, class T2=T1>
class A {
public:
void taunt() { cout << "A"; }
};

template <class T1>
class A<T1, T1> {
public:
void taunt() { cout << "B"; }
};

class B {};

class C {};

int main (int argc, char * const argv[]) {

A<B> a;
a.taunt(); // Prints "B"

return 0;
}

关于c++ 部分特化 : How can I specialize this template<class T1, 类 T2> 到此模板<类 T1>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10253219/

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