C ++: преобразование контейнера в контейнер другого, но совместимого типа

Мне часто бывает, что у меня есть контейнер C (или любой другой класс оболочки, даже интеллектуальные указатели) для типа T1 , и хотите преобразовать такой C в C , где T2 совместим с T1 .

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

7
задан sth 5 January 2011 в 15:17
поделиться