我希望尽可能用标准C++替换外部库(如boost),以最小化依赖关系。因此,我想知道是否存在安全的方法将boost::system::error_code
转换为std::error_code
。 伪代码示例:
void func(const std::error_code & err)
{
if(err) {
//error
} else {
//success
}
}
boost::system::error_code boost_err = foo(); //foo() returns a boost::system::error_code
std::error_code std_err = magic_code_here; //convert boost_err to std::error_code here
func(std_err);
最重要的不是完全相同的错误,只要尽可能接近,最后看是不是一个错误。是否有聪明的解决方案?
提前致谢!
#ifdef USE_BOOST
与typedef boost::system::error_code ErrorCodeType;
相结合,以及一个#else
与typedef std::error_code ErrorCodeType;
。然后,您可以逐步更改代码库,以便使用相同的接口调用支持两者,并且当所有内容在未定义USE_BOOST
的情况下正常工作时,您可以永久切换。否则,您将最终忘记在侧流上工作。 - Dennisboost::error_code
可以隐式转换为std::error_code
。 - Emile Cormier