首页 > 解决方案 > 返回匿名结构

问题描述

看来您可以通过struct这种方式返回一个未命名的:

auto foo() {
    struct {
        int bar;

        int square() {
            return bar * bar;
        }
    } a { 7 };
    return a;
}

无论如何,如果没有多余的变量 name a,是否可以这样做,因此是匿名的?

标签: c++structc++17

解决方案


我不知道这个练习的意义是什么,所以这里有一个从技术上满足你要求的答案:

auto helper()
{
    struct {
        int x;
    } a {0};
    return a;
}

decltype(helper()) foo()
{
    return {8};
}

https://godbolt.org/z/zA8C1V

  • 该结构未命名。

  • foo不返回命名变量。

当然,这简直是荒谬的——人们只会命名结构而不是这个decltype愚蠢的东西。


推荐阅读