Supposons que j'ai un std::pmr::vector
de int
déjà utilisé. Il est déjà initialisé et contient N éléments (l'important est que N soit supérieur à 0). Sous le capot, il utilise la ressource mémoire M1
.
Jusqu'à présent, tout va bien. Il fonctionne, je peux le comparer avec un autre vecteur d'entiers qui utilise une ressource mémoire complètement différente et ainsi de suite avec toutes les autres choses fantastiques qu'un allocateur polymorphe a à offrir.
Je souhaite maintenant modifier la ressource mémoire sous-jacente de mon vecteur (en mettant de côté tous les inconvénients possibles en termes de performances ou autres).
Quelque chose comme ça :
template<typename MR>
void setMemoryResource(MR *resource) {
// ... ??
}
Comment puis-je le gérer pour que tous les éléments soient encore présents après l'opération ?
Je demande cela car ni le conteneur ni l'allocateur n'ont de méthode pour définir une ressource mémoire différente. C'est pourquoi je me demande même si c'est possible.
Je peux imaginer quelques façons de le faire, mais aucune ne semble idiomatique. En fait, elles ressemblent toutes à un moyen délicat de contourner un trou dans l'API.
Je suis sûr qu'il me manque quelque chose de fondamental et que c'est probablement aussi simple qu'un devoir. Ai-je tort ?