Например,
std::vector<SomeNonCopyableType*> values = getVector();
auto &cvalues = reinterpret_cast<std::vector<const SomeNonCopyableType*>&>(values);
// use cvalues...
Это не разрешено в стандарте, конечно.
Однако постоянство указанного типа не будет иметь никакого значения в деталях реализации, если они не специализированы. Могу ли я в этом случае считать это преобразование практически безопасным?
Если это плохая идея, есть ли изящный способ сделать контейнер указателя на const из контейнера указателя на неконстантный без копирования?