gpt4 book ai didi

c++ - 如何将参数传递给模板模板参数

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:56:34 25 4
gpt4 key购买 nike

我试着做这样的事情:

A 类:

template < typename T1, typename T2 = int >
class ClassA {};

ClassB 使用 ClassA 作为存储实现:

template 
<
typename T,
template < typename = T, typename = int > class Storage = ClassA
>
class ClassB : public Storage<T> {};

现在我可以创建 ClassB 的实例了:

ClassB<double>          myClass;    // Ok, using ClassA (implicit) with <double,int> (implicit)
ClassB<double,ClassA> myClass2; // Ok, using ClassA (explicit) with <double,int> (implicit)
ClassB<double,ClassA<double,int>> myClass3; // Not ok, can't using ClassA (explicit) with <double,int> (explicit)

如何为 B 类参数化存储(A 类)?

最佳答案

您将它们放在一个单独的参数中。 ClassA<double,int>已经是一个类型,所以它不能用于模板模板参数。

template<typename T,
template <typename, typename> class Storage = ClassA,
typename StorageT1 = T,
typename StorageT2 = int>
class ClassB : public Storage<StorageT1, StorageT2> {};

ClassB<double> myClass;
ClassB<double, ClassA> myClass2;
ClassB<double, ClassA, double, int> myClass3;

关于c++ - 如何将参数传递给模板模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8961329/

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