>>40 >>40 No, それだと C との互換性がなくなっちゃうから。C++ 標準規格では、 仮想関数を持たないクラスに対して downcast できないことになってる。
5.2.7 Dynamic cast 1 The result of the expression dynamic_cast<T>(v) is the result of converting the expression v to type T. T shall be a pointer or reference to a complete class type, or “pointer to cv void”. ... (2-5 upcast とか null ポインタの扱いなど) 6 Otherwise, v shall be a pointer to or an lvalue of a polymorphic type (10.3).
RTTI といえば typeid もあるけど、あれも polymorphic class 以外に 適用すると、実際の型が返ってくるとは限らない。
5.2.8 Type identification 3 When typeid is applied to an expression other than an lvalue of a polymorphic class type, the result refers to a type_info object representing the static type of the expression.