memory_polymorphic
memory_polymorphic (std::polymorphic)
<memory> 헤더에 정의되어 있어요. 아마도 서로 다른 타입의 동적으로 할당된 객체를 값 의미론(value-like semantics)으로 감싸는 래퍼예요. C++26부터 도입됐어요.
출처: cppreference
본문
template< class T, class Allocator = std::allocator<T> >
class polymorphic; // (1) since C++26
namespace pmr {
template< class T >
using polymorphic =
std::polymorphic<T, std::pmr::polymorphic_allocator<T>>; // (2) since C++26
}
-
std::polymorphic은 아마도 서로 다른 타입의 동적으로 할당된 객체를 값 의미론으로 담는 래퍼예요.
-
std::pmr::polymorphic은 다형적 할당자를 사용하는 별칭 템플릿이에요.
std::indirect와 달리 polymorphic은 객체의 타입이 고정되는 요구가 없어, 값 의미론을 유지하면서 타입이 다른 객체를 보관할 수 있게 해줘요. Allocator를 사용해 소유한 객체를 할당·해제해요.
std::polymorphic<Base> p = Derived1{};
p = Derived2{}; // 다른 파생 타입으로 교체 가능 (런타임 다형성 + 값 의미론)