引数の型としてポインタを要求するケース:
・内部でイテレーションしたいとき。(配列など)
・”無効な値”が渡される可能性があるとき。(所謂ぬるぽ)
・スマートポインタ/生ポインタ互換のインターフェイスを作るとき
・関数ポインタが欲しいとき
・Cとの互換性など

引数の型として値を要求するケース
・そのほうが効率がいいとき
・内部でスワップ技法を利用するとき。
・破壊的コピーなどを期待するとき。

引数の型として参照・const参照を要求するケース
・上記以外