#include <iostream>
using namespace std;
template <class TYPE1>
struct SDataContainer
{
SDataContainer(TYPE1 pData)
{
m_pData = pData;
}
bool operator==(const SDataContainer<TYPE1>& pData)
{
return (m_pData == pData.m_pData);
}
TYPE1 m_pData;
};
template <class DATATYPE1>
class Comparison
{
public:
Comparison (const SDataContainer<DATATYPE1>& pSData)
: m_SData(pSData)
{
}
bool operator==(const Comparison<DATATYPE1>& pData)
{
return (m_SData.m_pData == pData.m_SData.m_pData);
}
SDataContainer<DATATYPE1> m_SData;
};
int main()
{
SDataContainer<float> sDCObj1 (10.0);
SDataContainer<float> sDCObj2 (10.0);
cout << "Verify the data: " << (sDCObj1 == sDCObj2) << endl;
Comparison<float> sCObj1 (sDCObj1);
Comparison<float> sCObj2 (sDCObj2);
cout << "Verify the data: " << (sCObj1 == sCObj2) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlIDxjbGFzcyBUWVBFMT4Kc3RydWN0IFNEYXRhQ29udGFpbmVyCnsKICAgIFNEYXRhQ29udGFpbmVyKFRZUEUxIHBEYXRhKQogICAgewogICAgICAgIG1fcERhdGEgPSBwRGF0YTsKICAgIH0KCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU0RhdGFDb250YWluZXI8VFlQRTE+JiBwRGF0YSkKICAgIHsKICAgICAgICByZXR1cm4gKG1fcERhdGEgPT0gcERhdGEubV9wRGF0YSk7CiAgICB9CgogICAgVFlQRTEgbV9wRGF0YTsKfTsKdGVtcGxhdGUgPGNsYXNzIERBVEFUWVBFMT4KY2xhc3MgQ29tcGFyaXNvbgp7CiAgICBwdWJsaWM6CiAgICAgICAgQ29tcGFyaXNvbiAoY29uc3QgU0RhdGFDb250YWluZXI8REFUQVRZUEUxPiYgcFNEYXRhKQogICAgICAgIDogbV9TRGF0YShwU0RhdGEpCiAgICAgICAgewogICAgICAgIH0KICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29tcGFyaXNvbjxEQVRBVFlQRTE+JiBwRGF0YSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAobV9TRGF0YS5tX3BEYXRhID09IHBEYXRhLm1fU0RhdGEubV9wRGF0YSk7CiAgICAgICAgfQogICAgICAgIFNEYXRhQ29udGFpbmVyPERBVEFUWVBFMT4gbV9TRGF0YTsKfTsKaW50IG1haW4oKQp7CiAgICBTRGF0YUNvbnRhaW5lcjxmbG9hdD4gc0RDT2JqMSAoMTAuMCk7CiAgICBTRGF0YUNvbnRhaW5lcjxmbG9hdD4gc0RDT2JqMiAoMTAuMCk7CiAgICBjb3V0IDw8ICJWZXJpZnkgdGhlIGRhdGE6ICIgPDwgKHNEQ09iajEgPT0gc0RDT2JqMikgPDwgZW5kbDsKICAgIENvbXBhcmlzb248ZmxvYXQ+IHNDT2JqMSAoc0RDT2JqMSk7CiAgICBDb21wYXJpc29uPGZsb2F0PiBzQ09iajIgKHNEQ09iajIpOwogICAgY291dCA8PCAiVmVyaWZ5IHRoZSBkYXRhOiAiIDw8IChzQ09iajEgPT0gc0NPYmoyKSA8PCBlbmRsOwogICAgcmV0dXJuIDA7Cn0=