-
Bug
-
Resolution: Unresolved
-
Low
-
Code Generation Tools
-
CODEGEN-4050
-
shared_ptr::get_deleter() should return the original deleter class without copying. Test case:
#include <stdio.h>
#include <memory>
struct S {
int m;
S(int i) : m {}
};
bool flag = false;
struct Deleter {
int m;
Deleter() : m(1) {}
Deleter(const Deleter& d)
void operator() (void* p)
{ flag = true; }};
int main(void)
{ Deleter x00; std::shared_ptr<char> p00(new char, x00); Deleter* pg00 = std::get_deleter<Deleter, char>(p00); if ( pg00 != &x00) printf("Got m=%d instead of m=%d.\n", pg00->m, x00.m); }