alibaba / yalantinglibs

A collection of modern C++ libraries, include coro_rpc, struct_pack, struct_json, struct_xml, struct_pb, easylog, async_simple
https://alibaba.github.io/yalantinglibs/
Apache License 2.0
1.56k stars 240 forks source link

[struct_pack] 是否支持智能指针 #813

Closed bolanbujing closed 1 week ago

bolanbujing commented 1 week ago

我写了个小测试: std::shared_ptr<int> y = std::make_shared<int>(); auto z = struct_pack::serialize< std::vector<uint8_t>>( y);

报错信息是: error: cannot decompose inaccessible member ‘std::shared_ptr<int, __gnu_cxx::_S_atomic>::_M_ptr’ of ‘std::shared_ptr<int, __gnu_cxx::_S_atomic>’ 1212 | auto &&[a1, a2] = object; | ^~~~

我们的业务需要序列化 std::shared_ptr<vector<std::shared_ptr<int>>>

qicosmos commented 1 week ago

这个测试代码不完整吧。

std::shared_ptr y = std::make_shared();

这行代码编译不过的。

把没有编译错误的测试代码发出来。

qicosmos commented 1 week ago

std::shared_ptr y = std::make_shared(); 这行代码是语法错误的,编译都不会通过的。

bolanbujing commented 1 week ago

``

std::shared_ptr y = std::make_shared(); 这行代码是语法错误的,编译都不会通过的。 我知道了,这里面写代码必须要加引号,不然识别不了,<int> 这个显示不了

qicosmos commented 1 week ago

另外struct_pack 只支持了std::unique_ptr 暂时还不支持std::shared_ptr

bolanbujing commented 1 week ago

另外struct_pack 只支持了std::unique_ptr 暂时还不支持std::shared_ptr

c++17怎么没这个问题呢

qicosmos commented 1 week ago

不支持std::shared_ptr, 你说的没这个问题有测试代码吗?

bolanbujing commented 1 week ago

有,还是同一个测试代码呀,上面的代码,你用c++17,c++20编译就直到了