jak zastąpić makro w tym przykładzie konwencją using bądź typedef

0

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;
}
4
template<typename T>
using com_ptr = unique_ptr<T, Deleter<T>>;

i potem

com_ptr<int> ptr(&x);

przy czym sugeruję nieużywanie using namespace std.

1 użytkowników online, w tym zalogowanych: 0, gości: 1