boost::openmethod::virtual_traits

Traits for types used as virtual parameters.

Synopsis

template<
    typename T,
    class Registry>
struct virtual_traits;

Description

virtual_traits must be specialized for each type that can be used as a virtual parameters. It enables methods to:

  • find the type of the object the argument refers to (e.g. Node from Node&)

  • obtain a non‐modifiable reference to that object (e.g. a const Node& from Node&)

  • cast the argument to another type (e.g. cast a Node& to a Plus&)

Requirements

Specializations of virtual_traits must provide the members described to the VirtualTraits blueprint.

Specializations

Name

Description

virtual_traits<std::shared_ptr<Class>, Registry>

Specialize virtual_traits for std::shared_ptr by value.

virtual_traits<virtual_ptr<Class, Registry> const&, Registry>

Specialize virtual_traits for virtual_ptr.

virtual_traits<Class*, Registry>

Specialize virtual_traits for pointer types.

virtual_traits<Class&, Registry>

Specialize virtual_traits for lvalue reference types.

virtual_traits<std::unique_ptr<Class>, Registry>

Specialize virtual_traits for std::unique_ptr by value.

virtual_traits<boost::intrusive_ptr<Class>, Registry>

Specialize virtual_traits for boost::intrusive_ptr.

virtual_traits<boost::intrusive_ptr<Class> const&, Registry>

Specialize virtual_traits for const boost::intrusive_ptr&.

virtual_traits<virtual_ptr<Class, Registry>, Registry>

Specialize virtual_traits for virtual_ptr.

virtual_traits<Class&&, Registry>

Specialize virtual_traits for xvalue reference types.

virtual_traits<std::shared_ptr<Class> const&, Registry>

Specialize virtual_traits for std::shared_ptr by reference.

Template Parameters

Name

Description

T

A type referring (in the broad sense) to an instance of a class.

Registry

A registry.

Created with MrDocs