恥ずかしながら、再びお尋ねします。

「type型の二つの値を交換する関数形式マクロ
 swap(type, a, b) を定義せよ」

という問題なのですが、どうにも解けません。

typeで型を反映させる方法と、値を交換するとき仲介として用いる変数の
定義の仕方がわかりません。
はじめは簡単な問題だとたかをくくっていたのですが、どうにも解けません。

ご存知の方、よろしければご教授願います。