gpt4 book ai didi

c++ - 使用分支逻辑进行编译时类型检查

转载 作者:搜寻专家 更新时间:2023-10-31 00:33:28 25 4
gpt4 key购买 nike

我正在尝试确定是否有一种方法可以在编译时同时对两种不同类型进行条件检查。

例子:

template <typename T>
class MyClass
{
returnVal myFunction() const
{
// Is there a compile time way of doing this? std::conditional?
return myConditionFunction(std::is_same<char, T> || std::is_same<unsigned char, T>);
}

returnVal myConditionFunction(std::true_type& const) const
{
// perform calculations on char or unsigned char
}

returnVal myConditionFunction(std::false_type& const) const
{
// perform calculations on non-char/unsigned char types
}
};

如果类型是 char 或 unsigned char,我想调用一个函数。

编辑:更新代码以显示我正在使用模板化类。

最佳答案

您可以使用条件生成一个编译时常量,然后创建一个匹配true_type 的类型。或 false_type :

returnVal myFunction() const
{
typedef std::integral_constant<bool,
std::is_same<unsigned char, T>::value
|| std::is_same< char, T>::value> selector;

return myConditionFunction(selector());
}

请注意 std::true_type只是std::integral_constant<bool,true>同样对于 std::false_type .

关于c++ - 使用分支逻辑进行编译时类型检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28615218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com