gpt4 book ai didi

c++ - 使用 brace-init 初始化对 std::shared_ptr 的引用

转载 作者:可可西里 更新时间:2023-11-01 18:38:30 34 4
gpt4 key购买 nike

<分区>

我最近在编写代码,无意中发现了 GCC 和 Clang 中的一些不寻常之处。使用 brace-init 会在 gcc 中触发编译错误,而直接初始化如 &b = a 会起作用。下面的代码是我遇到的这种行为的一个非常简单的例子,我想知道为什么 GCC 不编译代码,因为没有一个 shared_ptr 采用 initializer_list 而 a 是一个左值

#include <iostream>
#include <memory>

int main( )
{
std::shared_ptr<int> a { nullptr }, &b { a };

a = std::make_shared<int> ( 1e3 );
std::cout << ( b ? *b : 0 ) << std::endl;

return 0;
}

Clang 3.4 编译它但 GCC 4.8 不编译。

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