#include <iostream>

using namespace std;

class figure
{
public:
    virtual ~figure(){}
};

class Pawn : public figure
{
public:
    virtual ~Pawn(){}
};

void value(figure fi)
{
    cout << "val typeid check: " << (dynamic_cast<Pawn*>(&fi) != nullptr) << endl;
    if (dynamic_cast<Pawn*>(&fi) != nullptr)
    {
        Pawn& p = dynamic_cast<Pawn&>(fi);
    }
}

void refer(figure& fi)
{
    cout << "val typeid check: " << (dynamic_cast<Pawn*>(&fi) != nullptr) << endl;
    if (dynamic_cast<Pawn*>(&fi) != nullptr)
    {
        Pawn& p = dynamic_cast<Pawn&>(fi);
    }
}

int main()
{
    Pawn p;
    value(p);
    refer(p);
}
