boost::openmethod::n2216 :: Boost.OpenMethod

# boost::openmethod::n2216

N2216 ambiguity resolution.

## Synopsis

Declared in `<boost/openmethod/preamble.hpp>`

    struct n2216;

## Description

If `n2216` is present in `initialize`'s `Options`, additional steps are taken to select a single overrider in presence of ambiguous overriders sets, according to the rules defined in the N2216 paper. If the normal resolution procedure fails to select a single overrider, the following steps are applied, in order:

- If the return types of the remaining overriders are all polymorphic and covariant, and one of the return types is more specialized thjat all the others, use it.

- Otherwise, pick one of the overriders. Which one is used is unspecified, but remains the same throughtout the program, and across different runs of the same program.

Created with MrDocs