接受 enum class CMD 或 uint8_t 的 函数模板使用C++ requires 语法
以下是一个使用C++ requires语法的函数模板,接受enum class CMD或uint8_t类型的参数:
#include <type_traits>
enum class CMD : uint8_t {
CMD1,
CMD2,
CMD3
};
template<typename T>
requires std::is_same_v<T, CMD> || std::is_same_v<T, uint8_t>
void processCommand(T command) {
// 处理命令逻辑
// ...
}
int main() {
CMD command = CMD::CMD1;
processCommand(command);
uint8_t commandValue = 2;
processCommand(commandValue);
return 0;
}
在这个例子中,processCommand函数模板使用了requires语法来限定模板参数T的类型。requires后面的表达式std::is_same_v<T, CMD> || std::is_same_v<T, uint8_t>用于判断T是否为CMD或uint8_t类型。
在main函数中,我们分别传递了一个CMD类型的参数和一个uint8_t类型的参数给processCommand函数模板进行处理。由于两者的类型都符合模板的要求,因此可以成功调用并处理命令逻辑
原文地址: https://www.cveoy.top/t/topic/iaBb 著作权归作者所有。请勿转载和采集!