Posso supor que os alocadores não mantêm seu pool de memória diretamente (e podem, portanto, ser copiados)?

Estou escrevendo um contêiner e gostaria de permitir que o usuário use alocadores personalizados, mas não posso dizer se devo passar alocadores por referência ou por valor.

É garantido (ou pelo menos, uma suposição razoável a ser feita) que um objeto alocadornão contém seu pool de memória diretamente e, portanto, seria OK para copiar um alocador e esperar que os pools de memória dos alocadores para ser compatível com o intervalo? Ou eu sempre preciso passar alocadores por referência?

(Descobri que a passagem por referência prejudica o desempenho por um fator de> 2 porque o compilador começa a se preocupar com o aliasing, portanto, faz com que eu dependa ou não dessa suposição.)

questionAnswers(2)

yourAnswerToTheQuestion