class ov::Any::Base

class Base: public std::enable_shared_from_this< Base >
{
public:
    // typedefs

    typedef std::shared_ptr<Base> Ptr;

    // methods

    void type_check(const std::type_info&) const;
    virtual const std::type_info& type_info() const = 0;
    virtual std::vector<std::type_index> base_type_info() const = 0;
    virtual const void \* addressof() const = 0;
    void \* addressof();
    virtual Base::Ptr copy() const = 0;
    virtual bool equal(const Base& rhs) const = 0;
    virtual void print(std::ostream& os) const = 0;
    virtual void read(std::istream& os) = 0;
    void read_to(Base& other) const;
    virtual const DiscreteTypeInfo& get_type_info() const = 0;
    virtual std::shared_ptr<RuntimeAttribute> as_runtime_attribute() const;
    virtual bool is_copyable() const;
    virtual Any init(const std::shared_ptr<Node>& node);
    virtual Any merge(const std::vector<std::shared_ptr<Node>>& nodes);
    virtual std::string to_string();
    virtual bool visit_attributes(AttributeVisitor&);
    bool visit_attributes(AttributeVisitor&) const;
    std::string to_string() const;
    bool is(const std::type_info& other) const;

    template <class T>
    bool is() const;

    template <class T>
    T& as();

    template <class T>
    const T& as() const;

protected:
};