以下是一个使用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函数模板进行处理。由于两者的类型都符合模板的要求,因此可以成功调用并处理命令逻辑

接受 enum class CMD 或 uint8_t 的 函数模板使用C++ requires 语法

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

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