主要优点是它error_code
是一种可复制的类型,可以在库之间传递,而无需涉及任何动态内存分配或模板化,这使其非常轻便且易于使用。
如果您正在编写一个完全独立的项目,那么可以,当您只有自己的类型时,错误代码和类别似乎过于复杂。
但是,编写打算供其他人使用的库时,事情会发生变化(例如,ASIO,因为您链接了think-async.com)。您可以让一个库接收一个error_code
实例,并且它可以干净高效地传递它,而无需了解使用该库的代码的任何知识,也不必使每个错误处理函数都以错误类型为模板。
在这种情况下,错误类别在处理多个错误源时很重要,因为给定的错误代码可能基于错误源表示两种不同的含义。
编辑:注意,在您的第一个链接中,类别实际上是单例的。这是在维护轻量级服务中完成的,因为将指针复制到保证永远不会被删除或修改的对象是廉价的,内存安全的和线程安全的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句