template <typename T>
auto func1(T&& r_xxx);


template <typename T>
auto func1(T& l_xxx);


template <typename T>
auto func(T&& val)
{
func1(std::forward<T>(val));
・・・
}

func->func1に転送
func1がオーバーロードされてて、その引数名とか