Мне пришла в голову идея определить общий оператор сравнения, который работал бы с любым типом, для удовольствия.
#include <cstring>
#include <iostream>
class A
{
public:
A(int id) : id(id) {}
private:
int id;
};
template <class T>
inline bool operator==(const T& a, const T& b)
{
return memcmp(&a, &b, sizeof(a)) == 0; // implementation is unimportant (can fail because of padding)
}
int main()
{
std::cout << (A(10) == A(10)) << std::endl; // 1
std::cout << (A(10) == A(15)) << std::endl; // 0
}
Я думаю, что это может быть полезно обойти отсутствие оператора сравнения по умолчанию в С++.
Это ужасная идея? Интересно, может ли это сделать что-нибудь в некоторых случаях?