#include <iostream>

struct Base
{
	public:
		Base(int a) : _a(a) { }
    protected:
    int _a;
    bool operator == ( const Base& other ) const
    {
        return (_a == other._a);
    }
};

struct Derived : public Base
{
	Derived(int a) : Base(a) { }
    bool operator == ( const Derived& other ) const
    {
    	return Base::operator==(other);
        //return static_cast<Base>(*this) == static_cast<Base>(other);
    }
};

int main()
{
    Derived b1(0), b2(0), b3(5);
    std::cout << std::boolalpha << (b1 == b2) << std::endl;
    std::cout << (b1 == b3) << std::endl;
}