我有一个有bug的程序。逻辑是无意义的,只是一个玩具示例。
#include <ranges>
#include <iostream>
#include <fmt/format.h>
#include <fmt/ranges.h>
template<typename T>
constexpr bool size_is_4(){
return sizeof(T)==4;
}
int main() {
std::cout << fmt::format("float size is 4 bytes : {}\n", size_is_4<float>);
std::cout << fmt::format("double size is 4 bytes : {}\n", size_is_4<double>);
}
输出结果为
浮点数大小为4字节:正确
双精度大小为4字节:错误
问题在于我将函数指针传递给了fmt::format
,它将其打印为布尔值。修复很容易,只需调用该函数,但我想知道是否有一种方法可以捕获这类错误。
由于函数返回bool
,因此实际上作为输出看起来是合理的。