C ++, будучи скомпилированным языком (обычно), не может делать то, что вы от него хотите, потому что во время выполнения компилятора больше нет, чтобы выполнять тот разбор и создание кода, которые вам понадобятся для вашего magic
функция. В этом принципиальное отличие компилируемых и интерпретируемых языков.
Если вы действительно хотите сделать то, что вы просите, вам, по сути, придется написать синтаксический анализатор, который может анализировать определения структур C ++ и понять, как LLVM размещает такую структуру в памяти , Однако это, вероятно, не совсем то, что вы хотите сделать.
Какую большую проблему вы пытаетесь решить здесь? Звучит так, как будто вы можете использовать шаблоны, чтобы делать то, что вы хотите - по следующим направлениям:
template <class T>
int magic(T a, T b)
{
return a.x + b.x;
}