我有以下结构:
template <typename T>
struct Odp
{
T m_t;
};
我想对它进行专门化,这样我就可以添加一个运算符,这样该类型就可以很好地与 STL 集配合使用。(我不能Odp
直接修改;它是遗留代码。)这是我看到的两种方法:
struct Ftw : public Odp<int>
{
bool operator==(const Ftw& rhs)
{
return m_t == rhs.m_t;
}
};
struct FtwContain
{
Odp<int> odp;
bool operator==(const FtwContain& rhs)
{
return odp.m_t == rhs.odp.m_t;
}
};
有什么理由更喜欢第二个而不是第一个?第一种方法似乎允许更简洁的代码:
Ftw ftw;
ftw.m_t = 2;
FtwContain ftwContain;
ftwContain.odp.m_t = 2;
(此外,我可能对“模板专业化”一词的含义感到困惑。)