gpt4 book ai didi

c++ - 如何为模板化类的模板化函数定义模板特化

转载 作者:行者123 更新时间:2023-11-30 03:23:17 27 4
gpt4 key购买 nike

我有一个类,类似于下面的 BizClass。我想为特定的具体类型定义一个模板化函数和一个专门化。我不确定合适的语法。

template <class Foo> 
class BizClass {
public:
template <typename Bar>
void Action(Container<Bar> m);
// Foo is used somewhere else...
};

// This seems to work.
template <class Foo>
template <typename Bar>
inline void BizClass<Foo>::Action(Container<Bar> m) {}

// This specialization doesn't compile, where Foobar is a concrete class.
template <class Foo>
inline void BizClass<Foo>::Action(Container<FooBar> m) {}

我该如何处理这种情况下的模板特化?

最佳答案

在标题为 This seems to work. 的第一个代码示例中,它只是定义模板函数的主体,它不是特化。

在第二个示例中,您尝试特化一个模板,该模板是另一个未特化模板的成员。这是不允许的。

如果你想特化Action,你还需要特化BizClass,例如这是一个包含 Foo=intBar=char 的示例:

template<> template<>
inline void BizClass<int>::Action(Container<char> m)
{

}

关于c++ - 如何为模板化类的模板化函数定义模板特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50477543/

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