#include <typeinfo>
#include <iostream>
using namespace std;

#include <visitprint.h>

bool const visitprint::visit( visitbase & x)
{
  if (typeid(x)==typeid(visitdataA))
    return visit( (visitdataA&)x );

  if (typeid(x)==typeid(visitdataB))
    return visit( (visitdataB&)x );

  return false;
}

bool const visitprint::visit( visitdataA & a)
{
  cout << "print(visitdataA)    - A::val=" << a.val << endl;
  return true;
}

bool const visitprint::visit( visitdataB & b)
{
  cout << "print(visitdataB)    - B::val=" << b.val << endl;
  return true;
}



