#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;
}