我想确认某个类型是否可以与 std::format
一起使用。
以下是我的初步尝试:
template<typename Object>
concept formattable = requires(const Object & obj)
{
std::format("{}", obj);
};
但是这并不起作用。它基本上对所有类型都返回 true。即使是那些不能与 std::format 一起使用的类型。
static_assert(!formattable<std::vector<int>>); // 应该返回 false
为什么它不起作用?
std::format_context::template
这行代码吗?我对这种语法不是很熟悉。 - Elad Maimonistd::format_context
中定义的模板类型别名@EladMaimoni。 - 康桓瑋template
关键字告诉编译器紧随其后的formatter_type < std::remove_cvref_t
是所有 T 的模板的一部分,而不是有时候的比较。C++ 语法太疯狂了! - BoPtemplate
,因为std::format_context
不是一个相关的名称。 - cpplearner