我想要实现的主要是从C++ 11中的函数返回一个未命名的结构.在C++ 14中,我可以通过定义函数内联并具有auto返回类型来完成此操作,如下所示:
auto func()
{
struct
{
int member;
} ret;
// set ret.member
return ret;
}
Run Code Online (Sandbox Code Playgroud)
但是,C++ 11不支持推导普通(非lambda)函数的返回类型,这仅在内联完成定义时才适用于C++ 14.
我在函数声明中尝试了以下两种声明结构的变体:
auto func() -> struct { int member; };
struct { int member; } func();
Run Code Online (Sandbox Code Playgroud)
这对C++ 11来说根本不可能吗?如果是这样,是否有人知道这是否是故意禁止的,或者只是没有人想到这种自动推断类型的新用法(因为这只适用于将函数返回值赋给auto变量)?
最后,有没有其他方法可以实现类似的东西?我知道std::tuple,但我想说出价值观; 在我的用例中,struct类型肯定只用作这一函数的返回类型,为什么要命名呢?
| 归档时间: |
|
| 查看次数: |
235 次 |
| 最近记录: |