C++ 函数参数和函数体的本地可见类型定义

C++ 函数参数和函数体的本地可见类型定义,c++,C++,我想知道是否有任何方法可以在本地typedef用于函数参数和函数体 与以下情况类似: // typedef: solution 1, visible everywhere in the namespace void func(/*really long type*/ param1, /*many more params of same/different type*/) { // typedef: solution 2, cannot use for params /*mo

我想知道是否有任何方法可以在本地
typedef
用于函数参数和函数体

与以下情况类似:

// typedef: solution 1, visible everywhere in the namespace

void func(/*really long type*/ param1, /*many more params of same/different type*/) {

    // typedef: solution 2, cannot use for params

    /*more variables using the same typedef inside the body */

}
我知道我可以将
typedef
放在函数体中,但这对参数不可用。我希望它更具可读性,特别是考虑到长类型名和同一类型的多个参数。 函数外部的
typedef
会污染名称空间,除非别无选择,否则我想阻止它


是否有一种我不知道的方法可以在更本地化的情况下实现上述目标?如果没有,建议使用哪种解决方案。

您可以执行以下操作:

namespace inner {

  using type = really_long_type;  // typedef works as well

  void func(type t, /* ... */) {
    // ...
  }
}

using inner::func;

func
放在内部名称空间中,然后使用
内部::func
?我发现您的要求有点令人惊讶(或者我误解了您的意图)。假设您有一个仅在函数参数和主体中可见的类型。。。当你想从其他地方调用这个函数时,你打算用什么类型的参数?我会在那里把类型完整地拼写出来,这没关系,因为这样做不会太多次。@Jarod42这是个好主意