防止 fmt 打印函数指针
Prevent fmt from printing function pointers
我有一辆跟车program。逻辑是废话,只是一个玩具例子。
#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>);
}
输出是
float size is 4 bytes : true
double size is 4 bytes : true
问题是我将函数指针传递给 fmt::format
并将其打印为布尔值。修复很简单,调用函数即可,但不知道有没有办法捕获这样的错误。
因为函数 returns bool
它作为输出实际上看起来是合理的。
这是一个由函数指针未被指针检测逻辑捕获导致的错误。我开了一个 GitHub 问题:https://github.com/fmtlib/fmt/issues/2609.
更新:问题已修复。
我有一辆跟车program。逻辑是废话,只是一个玩具例子。
#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>);
}
输出是
float size is 4 bytes : true
double size is 4 bytes : true
问题是我将函数指针传递给 fmt::format
并将其打印为布尔值。修复很简单,调用函数即可,但不知道有没有办法捕获这样的错误。
因为函数 returns bool
它作为输出实际上看起来是合理的。
这是一个由函数指针未被指针检测逻辑捕获导致的错误。我开了一个 GitHub 问题:https://github.com/fmtlib/fmt/issues/2609.
更新:问题已修复。