如何为fmt 10.0中外部命名空间的枚举编写format_as函数?
fmt 10.0枚举格式化问题及解决方案探讨
fmt 10.0版本移除了std::format对枚举类型的隐式转换支持。替代方案是在自己的命名空间中引入通用的format_as函数,但这种方法存在局限——无法处理其他命名空间中定义的枚举。
我尝试过以下几种方法,但均未成功:
- 为其他命名空间的枚举进行隐式实例化
- 通过
using ExternalEnum = ExternalNS::Enum;将外部枚举导入自身命名空间 - 使用
using namespace ExternalNS;直接引入外部命名空间
目前我找到的可行解决方案仅有两种:
- 扩展外部命名空间,在其中添加相同的通用
format_as函数 - 针对每个外部枚举单独实现隐式转换
请问是否存在其他解决方案?如果没有,上述两种方案中哪一种更优?
内容的提问来源于stack exchange,提问作者Atılhan Emre Dursunoğlu
相关产品推荐
相关产品推荐

