c++ - 函数参数和函数体的本地可见 typedef
问题描述
我想知道是否有任何方法可以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;