Выражение-локальная переменная

Я пытался придумать (просто как эксперимент, ничего серьезного) с макросом, который оборачивает 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? Кажется, в последнее время было добавлено много функций, предназначенных для макросов.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …