Kev*_*olt 6 c++ return decltype inferred-type
我的问题:说我在C++(或C)中定义一个函数.有没有类似于C++的auto或decltype,我可以在函数定义中使用它来声明一个局部变量,其类型是从我定义的函数的返回类型推断出来的?
示例:C和C++中的常见编码模式是
SomeType foo() {
SomeType x;
// ... do something to x ...
return x;
}
Run Code Online (Sandbox Code Playgroud)
而且我希望推断出第二个SomeType而不是明确地输入它.以下不起作用,但我希望我能以这种精神做点什么
SomeType foo() {
decltype(return) x; //<-- infer the function return type, which here is SomeType
// ... do something to x ...
return x;
}
Run Code Online (Sandbox Code Playgroud)
对于简单的返回类型,这并不是什么大问题,但是当返回类型很复杂时(比如返回类型是一个包含大量模板参数的模板类),不必重复那种类型会很好(并且不易出错)函数内部的定义.
我也不想改变功能定义来实现这一目标.因此,虽然在上面的示例中它可以将SomeType更改为宏,或者可能使foo成为模板函数而SomeType是模板参数,但我真的想看看我是否可以从返回类型中特别推断出类型周围的功能.
也许答案是"不可能",这是公平的,但我想知道这种或那种方式.
在C++ 11中:
SomeType foo()
{
decltype(foo()) x;
Run Code Online (Sandbox Code Playgroud)
表达式foo()的类型与返回值的类型相同foo.