gpt4 book ai didi

c++ - 部分特化成员函数实现

转载 作者:太空狗 更新时间:2023-10-29 20:31:09 24 4
gpt4 key购买 nike

我目前正在重构一些代码,这些代码使用两个模板参数显式特化类模板的成员函数。

template <class S, class T>
class Foo
{
void bar();
};

template <class S, class T>
void Foo<S, T>::bar()
{ /* Generic stuff */ }

template <>
void Foo<SomeType, SomeType>::bar()
{ /* Some special function */ }

现在我添加了更多的模板参数,所以类现在看起来像这样:

template <class S, class EXTRA0, class T, class EXTRA1>
class Foo
{
void bar();
};

这两个额外的参数只是将 typedef 添加到我的类中,因此运行时功能并没有真正改变。有什么办法可以保留 bar 的(现在是部分的)专门实现吗?我似乎无法弄清楚它的语法,而且我有一种预感,这可能是不可能的。

编辑:我正在寻找类似的东西:

template <class EXTRA0, class EXTRA1>
void foo<SomeType, EXTRA0, Sometype, EXTRA1>::bar()
{
/* specialized implementation */
}

似乎没有编译..

最佳答案

你是对的,这是不可能的。

您可以做的是在新的 Foo 中创建一个辅助成员类模板,并将专用函数作为非模板成员函数放入其中。专门化辅助类而不是函数。

另一种选择是将特化变成非模板重载。

关于c++ - 部分特化成员函数实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4920068/

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