Converting shared_ptr<const T> fails
還沒有人認領這個 Issue。
評估
研究方向
首先,使用 shared_ptr,透過 create_shared_ptr、accept_shared_ptr 和 register_ptr_to_python 重現所示的 C++ 綁定。追蹤針對 const 目標型別的 Boost.Python 轉換路徑;當 create_shared_ptr 傳回的 Python Foo 能夠被 accept_shared_ptr 接受且不出現 ArgumentError 時,即表示完成。
由索引模型根據 Issue 內容生成。
描述
Boost Python (1.63) works well with shared_ptr<T>; if I write this in C++:
shared_ptr<Foo> create_shared_ptr() { return shared_ptr{...}; }
void accept_shared_ptr(const shared_ptr<Foo>& p) { }
...
class_<Foo, boost::noncopyable>("Foo", no_init); //Expose abstract class
register_ptr_to_python< shared_ptr<Foo> >();
def("create_shared_ptr", create_shared_ptr);
def("accept_shared_ptr", accept_shared_ptr);
Then I can write this in Python and everything works:
accept_shared_ptr(create_shared_ptr())
The problem comes when I try and wrap shared_ptr<const Foo>. (Which I need to do because I am wrapping a library that returns this.) If I modify the C++ functions as follows:
shared_ptr<const Foo> create_shared_ptr() { return shared_ptr{...}; }
void accept_shared_ptr(const shared_ptr<const Foo>& p) { }
Then I get the error:
Boost.Python.ArgumentError: Python argument types in w3w_python.accept_shared_ptr(Foo) did not match C++ signature: accept_shared_ptr(std::shared_ptr<Foo const>)
It seems the internals are implementing conversion from python Foo to C++ shared_ptr<Foo>, but not to C++ shared_ptr<const Foo>. Using
register_ptr_to_python< shared_ptr<const Foo> >();
doesn't help. How can I fix this?
- 主要語言
- C++
- 星號
- 537
- 分支
- 223
- 平均合併
- 11 小時 22 分鐘
- 30 天內合併 PR
- 2
貢獻指南
這個儲存庫沒有索引到貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
boostorg/python 的其他 Issue
-
難度 1/5 1 小時以內 新手友好度 84/100
-
難度 2/5 1-3 小時 新手友好度 68/100
-
難度 2/5 1-3 小時 新手友好度 64/100
-
BoostDetectToolset-1.90.0.cmake file not found in an include() call in boost_python-config.cmake 未關閉
難度 3/5 1-2 天 新手友好度 48/100
-
難度 4/5 3-5 天 新手友好度 25/100
相似的 Issue
-
ai_reviewed
難度 2/5 1-3 小時 新手友好度 68/100
ydb-platform/ydb#53869 · 3 則留言 ·
-
bug cert blocker needs triage
難度 2/5 1-3 小時 新手友好度 82/100
project-chip/connectedhomeip#74373 ·
-
upstream update
難度 2/5 1-3 小時 新手友好度 75/100
conan-io/conan-center-index#31035 ·
-
Bug
難度 2/5 1-3 小時 新手友好度 68/100
-
documentation
難度 1/5 1 小時以內 新手友好度 85/100
vllm-project/vllm-ascend#17329 ·