gpt4 book ai didi

c++ - 为什么不能在 C++11 或更高版本的函数声明中定义结构?

转载 作者:可可西里 更新时间:2023-11-01 18:35:42 27 4
gpt4 key购买 nike

我试图实现的主要是从 C++11 中的函数返回一个未命名的结构。在 C++14 中,我可以通过定义内联函数并将 auto 作为返回类型来实现,如下所示:

auto func()
{
struct
{
int member;
} ret;

// set ret.member

return ret;
}

但是,C++11 不支持推导普通(非 lambda)函数的返回类型,这仅在 C++14 内联定义时有效。

我尝试了以下两种在函数声明中声明结构的变体:

auto func() -> struct { int member; };
struct { int member; } func();

这对 C++11 来说根本不可能吗?如果是这样,有人知道这是否是故意不允许的,或者只是没有人想到这种自动推导类型的新用途(因为这只适用于将函数返回值分配给 auto 变量)?

最后,还有其他方法可以实现类似的效果吗?我知道 std::tuple,但我想命名这些值;在我的用例中,结构类型绝对仅用作此函数的返回类型,那么为什么要命名它?

最佳答案

[dcl.fct]/p11:

Types shall not be defined in return or parameter types.

据我所知,这在 C++11 中并不新鲜。

关于c++ - 为什么不能在 C++11 或更高版本的函数声明中定义结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28334419/

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