c++ - 返回匿名结构

标签 c++ struct c++17

看来你可以这样返回一个未命名的struct:

auto foo() {
    struct {
        int bar;

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

有没有办法在没有冗余变量名 a 的情况下匿名执行此操作?

最佳答案

对于初学者来说,C++ 没有定义匿名结构。我认为你的意思是一个未命名的结构。

根据 ro C++ 标准,return 语句定义为(8.6 跳转语句)

return expr-or-braced-init-listopt ;

因此您不能在返回语句中使用声明。如果是这样,那么您需要初步声明将返回的结构类型的对象。

关于c++ - 返回匿名结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56933382/

相关文章:

c++ - 如何在 lambda 本身中获取 C++ lambda 函数的地址?

c++ - 计算贝塞尔弧长 3D C++

c++ - 为什么没有在范围内声明字符串

C++ STL for_each 应该采用指向带有一个参数的成员函数的指针

c - 为什么我返回的结构在 c 中将负值更改为正值?

c - 来自 n 个初始化实例的数组

c++ - 在范围 for 循环的一个表达式中调用两个函数时出现段错误 C++

c++ - C++ 中的数组和覆盖 - 我可以重用同一个对象吗?

c++ - 此函数期望从 std::istream 解析什么格式的输入?

c++ - 为什么在用花括号初始化结构时会出错?