上下文为: 将一个容器(包含T类型)和一个char * p写入内存区域。让我们假设指针已经适合类型T - 对齐问题不是问题的一部分。 如何默认构建该内存区域上的元素?有没有一种简单的方法默认构造C++中的泛型类型,没有分配器实例?
((*T)(p))->T();
适用于类,但不适用于某些内置类型。
((*T)(p)) = 0; // or simply memset
整数类型,指针。 这两个包括一切,工会和什么不是? 是否有最佳做法,或者一些标准库功能? std :: allocator :: construct可以做到这一点, std :: vector使用,但它不是一个静态方法,所以我需要它的一个实例。有一些独立或静态功能可以做到吗?
- 编辑 -
是的,答案是显而易见的,而我是哑巴今天 - 放置新 顺便说一句,现在我试图破坏元素...
Placement new:'new(p)T();' –
该第一段代码不应该编译... – Brian
请参阅http://stackoverflow.com/questions/222557/what-uses-are-there-for- placement-new – sehe