Выражение-локальная переменная
Я попытался придумать (просто как эксперимент, ничего серьезного) с макросом, который оборачивает alloca более объектно-ориентированным способом, используя специальный "конструктор", который возвращает размер, который понадобится экземпляру, вместе с указателем на функцию, которая должен инициализировать это.
Писать, что использование большего количества утверждений просто:
void (*initf)(Type *inst);
Type *obj = alloca(Type::init(&initf, ...));
initf(obj);
Очевидно, что перенос этой функции в функцию сработал бы, если бы это было нечто иное, чем alloca, но это должно быть встроено.
Можно ли сделать выражение, которое выполняет такую задачу, возвращая obj
как его результат? Проект не должен оставаться прежним, но обычно должна быть функция, принимающая аргументы, которые должен принимать конструктор, и производящая функцию size и initializer. Если в качестве параметра взяли alloca std::pair<size_t,void(*)(void *ptr)>
все было бы намного проще.
Я подозреваю, что это не может быть достижимо в C++, но просто для любопытства, это может быть сделано в C? Кажется, в последнее время было добавлено много функций, предназначенных для макросов.