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 是否为 CMDuint8_t 类型。

main 函数中,我们分别传递了一个 CMD 类型的参数和一个 uint8_t 类型的参数给 processCommand 函数模板进行处理。由于两者的类型都符合模板的要求,因此可以成功调用并处理命令逻辑。

C++ 函数模板使用 requires 语法接受 enum class 和 uint8_t 类型

原文地址: https://www.cveoy.top/t/topic/pTnf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录