gpt4 book ai didi

c++ - 嵌套类的部分特化

转载 作者:行者123 更新时间:2023-12-01 23:08:14 24 4
gpt4 key购买 nike

如何在不部分特化嵌套ing类的情况下部分特化嵌套ed类?

class C 的实现对于所有 N 都是相同的。

C::iterator 的实现对于 N=1 是特殊的。

template<class T, int N>
class C
{
class iterator;
...
};

template<class T, int N>
class C<T, N>::iterator
{
...
};

// Partial specialization doesn't compile:
template<class T>
class C<T, 1>::iterator
{
...
};

我可以为 N=1 部分特化 class C,但那是很多代码重复......

最佳答案

如果您不想特化整个类,那么只需将迭代器移出类并使其成为模板:

template<class T, int N>
class C_iterator
{
...
};

如果需要,请进行特化:

template<class T>
class C_iterator<T, 1>
{
...
};

然后在您的类中将它用作迭代器,如果需要的话,请与它成为 friend :

template<class T, int N>
class C
{
using iterator = C_iterator<T, N>;
friend iterator;
...
};

关于c++ - 嵌套类的部分特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70413195/

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