gpt4 book ai didi

c++ - 嵌套模板类特化的语法

转载 作者:可可西里 更新时间:2023-11-01 15:05:33 24 4
gpt4 key购买 nike

我正在尝试找出嵌套模板类的显式特化的正确语法。下面的代码将更好地说明:

struct Column_Major;
struct Row_Major;

template<size_t rows, size_t cols, typename T, typename Allocator>
class Matrix
{

/* bunch of members */
template <typename storage = Column_Major>
class Iterator
{
/* bunch of members */
};
};

我想为 template <> class Matrix<...>::Iterator<Row_Major 写一个显式特化,但语法让我望而却步。我怀疑如果不对包含类 Matrix 进行显式特化,就不可能对 Iterator 类进行显式特化。但如果有办法做到这一点,我会很高兴。

我知道我可以使 Iterator 类成为一个单独的类,而不是 Matrix 类的成员,但是这样嵌套类允许我完全访问 Matrix 的模板参数和数据元类,它简化了事情。我知道如果需要我可以解决这个问题,但我首先想调查并了解嵌套方法的可能性。

谢谢,什穆尔

最佳答案

对于显式特化,你需要先特化外部类再特化内部类,你可以see this question for example .

有一个使用部分特化的解决方法:

template<size_t rows, size_t cols, typename T, typename Allocator>
class Matrix
{

// Notice the additionnal dummy parameter
// vvvvvvvvvvvvv
template <typename storage = Column_Major, bool = true>
class Iterator
{
};

// Specialization
template <bool dummy>
class Iterator<Row_Major, dummy>
{
};
};

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

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