C++: launder
개요
- 전달된 인자의 주소에 있는 객체에 대한 포인터를 반환
예제
- 코드
#include <iostream>
#include <memory>
#include <utility>
using namespace std;
class Test {
public:
~Test() { cout << "~Test()" << endl; }
};
int main() {
constexpr int size = 3;
unsigned char pool[sizeof(Test) * size];
for (int i = 0; i < size; ++i) {
new (pool + (sizeof(Test) * i)) Test;
}
auto ptr = launder(reinterpret_cast<Test *>(pool));
for (int i = 0; i < size; ++i) {
destroy_at(ptr + i);
}
return 0;
}
- 실행 결과
~Test()
~Test()
~Test()