首页 > 解决方案 > 与类内初始化聚合 - 作为默认参数

问题描述

以下代码无法编译(GCC、clang):

struct outer {
    struct inner {
        int i = 1;
        int j = 2;
    };
    void foo (const 
        inner& param = 
        inner{}) const {}
};

int main() {
    outer{}.foo();
}

但是,添加一个默认构造函数(带有实现)来inner解决这个问题。移出inner命名空间范围也有帮助。

这里有什么问题?我很感激对标准的引用。

标签: c++aggregatelanguage-lawyerc++17default-parameters

解决方案


推荐阅读