Вы можете отобразить тип значения следующим образом:
cout << val.type() << end;
и выведите номер.
Как мне сопоставить этот номер с фактическим типом?
кроме заглядывания в заголовочный файл, конечно, который раскрывает все ...
enum Value_type {
obj_type,array_type,str_type,bool_type,int_type,real_type,null_type
};