gpt4 book ai didi

c++ - 尝试定义一个接受模板参数的模板函数

转载 作者:太空宇宙 更新时间:2023-11-04 13:45:12 25 4
gpt4 key购买 nike

我正在尝试定义一个采用容器的模板函数,容器也是一种模板类型。我需要知道容器的模板类型是什么 (E)(这样我就可以在代码中引用它,例如 E element = *iterator;)。这是我的尝试:

template <template <typename E> T>
void sort(T& container){ ... }

我认为这意味着“sort 是一个模板函数,它接受一个模板参数 TT 是一个模板类型,它接受一个模板参数 E”。

但是我得到了错误:

expected 'class' before T.

当我把“class”放在那里时,它说:

variable or field 'sort' declared void

我在语法上做错了什么?

最佳答案

还有其他方法可以实现相同的功能。你需要的是 template template范围。一个工作示例是:

template <typename E, template <typename> class T>
void sort(T<E>& container){}
main(){}

在模板签名中,T被声明为采用另一个类型参数的(依赖)类型。该参数本身 ( E ) 需要声明并提供给 T ,就像您在 vector<int> 中使用的一样.

您还可以使用:

    template <typename E, template <typename, typename...> class T>

如果您的容器类型需要可选参数,例如特征。

关于c++ - 尝试定义一个接受模板参数的模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26325999/

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