- #include <iostream> 
-   
- enum types { INTEGER, DOUBLE, BOOL, STRING }; 
-   
- class Descriptor { 
-   
- public: 
-     Descriptor(types type): 
-         _type{type} 
-     {} 
-     types &type() { return _type; } 
-   
-   
-     virtual ~Descriptor() = default; 
-   
- private: 
-     types _type; 
- }; 
-   
- class Number: public Descriptor { 
-   
- public: 
-     Number(types descType): 
-         Descriptor(descType) 
-     {} 
-   
-     virtual ~Number() = default; 
-   
-     int intValue; 
- }; 
-   
-   
- void printValue(Descriptor &t) { 
-   
-   auto cast = dynamic_cast<Number *>(&t); 
-   if (cast == nullptr) { 
-     std::cout << "Err" << std::endl; 
-   } else { 
-     std::cout << "Works" << std::endl; 
-   } 
- } 
-   
-   
- int main() { 
-   
-   Number t =  Number(INTEGER); 
-   t.intValue = 1; 
-   
-   printValue(t); 
- } 
-   
				I2luY2x1ZGUgPGlvc3RyZWFtPgoKZW51bSB0eXBlcyB7IElOVEVHRVIsIERPVUJMRSwgQk9PTCwgU1RSSU5HIH07CgpjbGFzcyBEZXNjcmlwdG9yIHsKCnB1YmxpYzoKICAgIERlc2NyaXB0b3IodHlwZXMgdHlwZSk6CiAgICAgICAgX3R5cGV7dHlwZX0KICAgIHt9CiAgICB0eXBlcyAmdHlwZSgpIHsgcmV0dXJuIF90eXBlOyB9CgoKICAgIHZpcnR1YWwgfkRlc2NyaXB0b3IoKSA9IGRlZmF1bHQ7Cgpwcml2YXRlOgogICAgdHlwZXMgX3R5cGU7Cn07CgpjbGFzcyBOdW1iZXI6IHB1YmxpYyBEZXNjcmlwdG9yIHsKCnB1YmxpYzoKICAgIE51bWJlcih0eXBlcyBkZXNjVHlwZSk6CiAgICAgICAgRGVzY3JpcHRvcihkZXNjVHlwZSkKICAgIHt9CgogICAgdmlydHVhbCB+TnVtYmVyKCkgPSBkZWZhdWx0OwoKICAgIGludCBpbnRWYWx1ZTsKfTsKCgp2b2lkIHByaW50VmFsdWUoRGVzY3JpcHRvciAmdCkgewoKICBhdXRvIGNhc3QgPSBkeW5hbWljX2Nhc3Q8TnVtYmVyICo+KCZ0KTsKICBpZiAoY2FzdCA9PSBudWxscHRyKSB7CiAgICBzdGQ6OmNvdXQgPDwgIkVyciIgPDwgc3RkOjplbmRsOwogIH0gZWxzZSB7CiAgICBzdGQ6OmNvdXQgPDwgIldvcmtzIiA8PCBzdGQ6OmVuZGw7CiAgfQp9CgoKaW50IG1haW4oKSB7CgogIE51bWJlciB0ID0gIE51bWJlcihJTlRFR0VSKTsKICB0LmludFZhbHVlID0gMTsKCiAgcHJpbnRWYWx1ZSh0KTsKfQo=