簡體   English   中英

boost::system::error_code 和 boost::system::error_code::value() 有什么區別?

[英]What is the difference between boost::system::error_code and boost::system::error_code::value()?

例如,下面的代碼編譯。 test1總是等於test2嗎?

boost::system::error_code ec = foo()
bool test1 = ec.value() == boost::asio::error::would_block;
bool test2 = ec == boost::asio::error::would_block;

不。

類別將不匹配。 事實上,將兩者連接起來非常棘手,因為類別是全局單例,但由於靜態不同的類型,它們不能共享。

Boost 類型存在的原因是它們早於各種平台上的標准化/供應商實施

如果您需要將 boost::system::error_code 作為 std::error_code 傳遞,請參閱此處了解如何使用 shim 類別來混合這兩種類型:

是否可以將 boost::system::error_code 轉換為 std:error_code?

使用value()不是很安全,因為它只是刪除所有類別信息並返回處理錯誤是int 這似乎很長一段時間都像一個魅力,直到你遇到來自不同類別的錯誤。

暫無
暫無

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

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