【发布时间】:2013-09-16 08:20:02
【问题描述】:
考虑一个封装了其他函数但在封装调用之后执行某些操作的函数。
template< typename ftor, typename ... args >
typename std::result_of< ftor( args ... ) >::type
call_and_report( ftor && f, args && ... a ) {
auto && ret{ f( std::forward< args >( a ) ... ) };
std::cout << "Done!\n";
return std::forward< typename std::result_of< ftor( args ... ) >::type >
( ret );
}
如何扩展它以包装返回void 的函数?添加另一个专业很容易,但我正在寻找另一种可能是惯用的方式。
一般的想法是可能有也可能没有价值。这就像编译时optional。
【问题讨论】:
-
@Nawaz:是的,没关系:-S