在C++中没有重载operator ==的struct成员相等

Nah*_*Nah 7 c++ generics templates struct equality

是否可以定义某种可以为结构创建通用可比运算符的模板?

例如,这样的事情可能吗?

struct A
{
    int one;
    int two;
    int three;
};
bool AreEqual()
{
    A a {1,2,3};
    A b {1,2,3};

    return ComparableStruct<A>(a) == ComparableStruct<A>(b);
}
Run Code Online (Sandbox Code Playgroud)

所有这些都是结构的字段比较.您可以假设所有字段都是基本类型或重载operator ==.

我有很多像这样的结构,如果我可以把它放在一个模板或者用于比较的东西而不是为每个结构定义一个运算符==,它将节省我很多时间.谢谢!

更新

看起来这对C++来说是不可能的.我想知道为什么这个被Clas提案投票,如果有人有理由让我们知道!

对于使用基本类型的解决方案,请参阅R Sahu的解决方案.

小智 0

我的理解是,您要求做的是遍历各种结构并比较成员。

迭代结构体

这似乎无法用标准 c++ 来完成,但该线程给出了一些关于使用哪些库的想法。

从您的问题中不清楚所有结构是否具有相同的格式,我假设它们不具有相同的格式。