接受 enum class CMD 或 整形 的 函数模板使用C++ requires 语法
在C++中,可以使用requires语法来限制函数模板的参数类型。如果一个参数类型满足requires语法中的条件,那么该参数类型可以作为模板实参。
下面是一个示例,展示了如何接受enum class CMD或整型的函数模板:
#include <type_traits>
enum class CMD { CMD1, CMD2, CMD3 };
template<typename T>
requires std::is_enum_v<T> || std::is_integral_v<T>
void process(T value)
{
// 处理enum class CMD或整型的逻辑
}
int main()
{
process(CMD::CMD1); // 使用enum class CMD作为模板实参
process(42); // 使用整型作为模板实参
// process("test"); // 错误,不满足requires语法中的条件
return 0;
}
在上面的示例中,函数模板process使用了requires语法来限制参数类型。模板参数类型T必须是enum class或整型,否则编译器会报错。
注意,requires语法在C++20中引入,如果你使用的是较早的C++标准,可能无法使用requires语法,需要使用其他方式来实现类似的功能
原文地址: https://www.cveoy.top/t/topic/iaBt 著作权归作者所有。请勿转载和采集!