C++ 函数模板使用 requires 语法接受 enum class 和 uint8_t 类型
C++ 函数模板使用 requires 语法接受 enum class 和 uint8_t 类型
以下是一个使用 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/pTnf 著作权归作者所有。请勿转载和采集!