Si vous n'avez pas une liste de types parmi lesquels le any en détient un, vous ne pouvez pas convertir le any en son type et y opérer comme sur son véritable type.
Vous pouvez stocker un type dans un any, et une opération dans ce type en tant que pointeur de fonction sur cet any. Mais cela doit être fait au moment du stockage ou lorsque vous avez une liste (éventuellement avec 1 élément) des types possibles stockés dans le any.
C++ ne stocke pas suffisamment d'informations dans un any pour permettre à un code arbitraire d'être compilé sur ce type lorsqu'il stocke la valeur dans le any. C++ ne permet pas une "réification" complète au moment de l'exécution.
Effacement de type par élimination du type `any` questions? Q&R par un utilisateur de stackoverflow de mauvaise réputation donne un exemple de comment se souvenir d'une opération sur le contenu du any
tout en oubliant le type stocké.
Si vous avez une telle liste de types possibles, envisagez d'utiliser variant
. any
existe dans la fenêtre étroite où vous ne connaissez pas les types stockés au moment de la conception du conteneur, mais les connaissez à la fois à l'insertion et à la suppression.
Dans cette fenêtre étroite, vous pouvez effectuer des tests au moment de l'exécution en fonction de l'ID de type stocké et effectuer une conversion vers le type connu en utilisant any_cast
.