Мне часто бывает, что у меня есть контейнер C
(или любой другой класс оболочки, даже интеллектуальные указатели) для типа T1
, и хотите преобразовать такой C
в C
, где T2
совместим с T1
.
C ++ не позволяет мне напрямую преобразовывать весь контейнер, и принудительное преобразование reinterpet_cast
приведет к неопределенному поведение, поэтому мне нужно будет создать новый контейнер C
и повторно заполнить его элементами C
, преобразованными как T2
. Эта операция может быть довольно затратной как по времени, так и по пространству.
Например, оператор container_cast
(/ function?), Который создает и повторно заполняет C
тогда и только тогда, когда он не будет двоично совместим с C
?