我有一些 C 风格的函数返回0
以指示成功和!= 0
错误。
我想将它们“包装”到void
函数中,throw
而不是返回值。
我写了这个助手:
void checkStatus(int status) {
if (status != 0)
// throw an error object
}
然后,为了包装一个确定的函数int tilt(float degrees)
,我使用boost::bind
:
function<void(float)> ntilt = bind(checkStatus, bind(tilt, _1));
ntilt(30); // this will call checkStatus(tilt(30))
而且效果很好。但我想要一个专用的包装函数,所以我可以这样做:
function<void(float)> ntilt = wrap(tilt);
ntilt(30); // this will call checkStatus(tilt(30))
它应该适用于任何返回int
.
使用 Boost 的最佳方法是什么?