【发布时间】:2021-01-25 15:05:58
【问题描述】:
我正在尝试使用
fmt::format("Expected : '{}' vs. '{}'", getDataOrPointer(rA), getDataOrPointer(rB));
其中getDataOrPointer 应该返回一个void 指针(它总是可以被格式化)或者当存在格式化程序时的默认值:
//! Return the type if a `fmt::formatter` exists.
template<typename T,
typename std::enable_if_t<hasFormatter<std::decay<T>, char>>* = 0>
decltype(auto) getDataOrPointer(const T& rData)
{
return rData;
}
//! Return a void-Pointer if no `fmt::formatter` exists.
template<typename T,
typename std::enable_if_t<!hasFormatter<std::decay<T>, char>>* = 0>
const void* getDataOrPointer(const T& rData)
{
return static_cast<const void*>(&rData);
}
我不知道怎么写:hasFormatter<T,char> 来检查它是否可以被fmt 库格式化?我只希望在本地不总是这样的后备。
【问题讨论】: