Dla pewnych potrzeb muszę własny deleter dla unique pointera napisa (chodzi o obiekty COM które przed skasowaniem to tam trzeba jeszcze metode Release wywołać). Aby nie używać ciągle długiego pisania stworzyłem sobie makro ale czy makro mogę zastąpić konwencją
using nowytyp = starytyp;
bądź
typedef starytyp nowytyp;
?
Próbowałem ale coś nie chce mi sie skompilować. Jak używam makra to sie kompiluje.
#include <stdio.h>
#include <iostream>
#include <memory>
using namespace std;
template<typename T>
class Deleter {
public:
void operator()(T* r) {
if(r) {
//r->Release();
//delete r;
//r = nullptr;
std::cout << "removed\n";
}
}
};
#define com_ptr(T) unique_ptr<T, Deleter<T>>
int main()
{
int x = 7;
com_ptr(int) ptr(&x);
return 0;
}