gpt4 book ai didi

c++ - 聚合初始化不支持构造函数访问

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:36:36 25 4
gpt4 key购买 nike

<分区>

给出下面的示例,我惊讶地发现尽管默认构造函数被显式删除(或为此设置为默认构造函数),聚合初始化仍然是可能的。

#include <iostream>

struct DefaultPrivate
{
const int n_;
static const DefaultPrivate& create();

private:
DefaultPrivate() = delete;
};

const DefaultPrivate& DefaultPrivate::create()
{
static DefaultPrivate result{10};
return result;
}

int main() {
DefaultPrivate x; //Fails
DefaultPrivate y{10};//Works
return 0;
}

标准中未指定私有(private)默认(或删除)构造和聚合初始化之间的关系吗?

GCC 6.3 和 VCC 2017 都是这种情况

我问这个问题的原因是我希望更改对默认构造函数的访问会阻止公共(public)聚合初始化

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