VS2022 C++20模式下std::format指针报错C3615如何解决?
解决VS2022 C++20下std::format指针格式化的C3615错误
问题原因
C++标准规定,std::format的:p格式说明符仅支持**void*类型**的指针参数。你传入的int*属于其他指针类型,VS2022的std::format实现会在编译期解析格式字符串时触发错误。
解决方法
将int*显式转换为void*后再传入std::format,同时补充函数的返回逻辑:
#include <format> #include <string> auto dump(int *p) { std::string resultstring = std::format(" p points to address {:p}", static_cast<void*>(p)); return resultstring; }
另外,建议将VS2022更新至17.1及以上版本,旧版本的std::format实现存在部分兼容性bug,更新后可避免类似编译问题。
内容的提问来源于stack exchange,提问作者GeePokey
相关产品推荐
相关产品推荐

