Есть множество функций с сигнатурой:
AT Func(AT arg);<br>
Хочется сделать шаблон, который бы автоматически адаптировал этот интерфейс к:
Val AdaptedFunc(A a, Val v);<br>
При наличии конструкторов:
AT(A, Val);<br>
Val(AT);<br>
То есть если писать адаптер для каждой функции вручную получится так:
Val AdaptedFunc(A a, Val v)<br>
{<br>
return Val(Func(AT(a, v)));<br>
}<br>
Ясно, что это совсем не то, что хочется. Пока у меня получилось с помощью mixin templates, но это тоже не то, что хочется, а хочется в результате примерно такого кода:
Val v = Adapter!Func(A a, Val v);<br>