template <class T>
struct call_traits {
  typedef const T& param_type;
};

template<>
struct call_traits<int> {
  typedef int param_type;
};
//以下値渡しするものすべてについて繰り返し