簡體   English   中英

為什么沒有const void *的std :: free重載?

[英]Why there is no std::free overload for const void*?

我使用一個extern C函數,該函數返回動態分配的const char*

我想使用unique_ptr<const char, decltype(std::free)>來管理它。

但是沒有std::free(const void*)重載,所以我invalid conversion from 'const void*' to 'void*' const_cast<char*>() invalid conversion from 'const void*' to 'void*' ,必須使用const_cast<char*>()

這僅僅是標准庫的不完善之處,還是背后有其他問題?

std::free繼承自C標准庫。 C沒有重載,因此不能繼承const重載。

盡管C ++標准庫通過一些有用的重載擴展了繼承的C庫,但尚未free添加const重載。

從未考慮過這種過載,或者認為沒有足夠的過載以保證將其添加到標准中。 我還沒有遇到任何公開的提議來添加這樣的內容-盡管我還沒有閱讀過所有提議,也沒有參加任何委員會會議或研討會,所以我不能否認存在這種提議的可能性。文獻。

要解決缺少這種重載的問題,您確實可以使用const_cast 在這種情況下,它是完全安全的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM