gpt4 book ai didi

c++ - C++ 可以在类型自动从函数返回类型推断出的函数中使用局部变量吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:31:06 26 4
gpt4 key购买 nike

我的问题:假设我在 C++(或 C)中定义一个函数。是否有任何类似于 C++ 的 autodecltype 的东西,我可以在函数定义中使用它们来声明一个局部变量,该变量的类型是从我函数的返回类型推断出来的定义?

例子:C 和 C++ 中常见的编码模式是

SomeType foo() {
SomeType x;
// ... do something to x ...
return x;
}

我希望推断出第二个 SomeType 而不是明确地输入它。以下是行不通的,但我希望我能本着这种精神做点什么

SomeType foo() {
decltype(return) x; //<-- infer the function return type, which here is SomeType
// ... do something to x ...
return x;
}

对于简单的返回类型,这没什么大不了的,但是当返回类型很复杂时(比如返回类型是一个带有大量模板参数的模板类),最好(并且不易出错)不必在函数内重复该类型定义。

我还希望不必更改函数定义即可完成此操作。因此,虽然在上面的示例中它可以将 SomeType 更改为宏,或者可能使 foo 成为模板函数,而 SomeType 成为模板参数,我真的想看看一般情况下我是否可以从周围函数的返回类型中专门推断出一个类型。

也许答案是“不,这是不可能的”,这很公平,但我想知道其中一种方式。

最佳答案

在 C++11 中:

SomeType foo()
{
decltype(foo()) x;

表达式 foo()foo 的返回值具有相同的类型。

关于c++ - C++ 可以在类型自动从函数返回类型推断出的函数中使用局部变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25296924/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com