Покажи, как на макросах реализовать, например, такое
https://github.com/DevAlone/RealEngine/blob/master... это мой велосипедный смарт поинтер. Я, например, слабо представляю реализацию такого на макросах. Если же рассматривать функции, то макросы использовать в C++ нельзя, это плохой подход, который может привести к ошибкам, например в таком случае:
#include <iostream>
#define square(x) x*x
int main() {
int var = square(5 + 5);
std::cout << var << std::endl;
}
и нужно писать тыщи скобок, чтобы их избежать. Решение в стиле C++ и красивее и не приводит к ошибкам:
#include <iostream>
template <typename T>
inline T square(T val)
{
return val * val;
}
int main() {
int var = square(5 + 5);
std::cout << var << std::endl;
}
P.S. моё решение не учитывает ситуацию, когда аргумент шаблона - не встроенный тип