gpt4 book ai didi

c++嵌套模板特化与模板类

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

我的问题如下。这是我的方法:

template<class T>
T my_function();

这些专业工作正常:

template<>
int my_function(); //my_function<int>();

template<>
float my_function(); //my_function<flot>();
...

但这些不是:

1.

    template<>
template<class T>
std::list<T> my_function(); //my_function<std::list<class T> >();

2.

    template<class T>   
template<>
std::vector<T> my_function(); //my_function<std::vector<class T> >();

我得到错误:

too many template-parameter-lists

所以我的问题是:如何使用模板类专门化模板?

最佳答案

你不能部分特化一个函数模板,但你可以为类特化。因此,您可以将实现转发给一个类,如下所示:

namespace detail {

template <typename T> struct my_function_caller { T operator() () { /* Default implementation */ } };
template <> struct my_function_caller<int> { int operator() () { /* int implementation */ } };
template <> struct my_function_caller<float> { float operator() () { /* float implementation */ } };
template <typename T> struct my_function_caller<std::list<T>> { std::list<T> operator() () { /* std::list<T> implementation */ } };
template <typename T> struct my_function_caller<std::vector<T>> { std::vector<T> operator() () { /* std::vector<T> implementation */ } };

}


template<class T>
T my_function() { return detail::my_function_caller<T>()(); }

关于c++嵌套模板特化与模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24262648/

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