К сожалению, если вы хотите найти экземпляр std::any
в векторе std::any
экземпляров, ответ - нет.
std::any
нужна некоторая «магия», например, чтобы иметь возможность обрабатывать создание неизвестных типов объектов, но этот механизм является частным и должен поддерживать только создание объектов, а не сравнение на равенство.
Было бы возможно реализовать то, что вы ищете, используя тот же подход, но не со стандартным std::any
, который не публикует необходимые детали. Шаблон "manager" должен перечислять все возможные операции, и, например, в реализации g ++ это "access", "get_type_info", "clone", "destroy", "xfer".
variant
полностью отличается, потому что явно перечисляет все разрешенные типы и, следовательно, в любом месте, где он используется, имеет доступ ко всем методам.