gpt4 book ai didi

c++ - 编译模板方面的char、signed char或unsigned char参数类型的函数重载

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

这是一个开放式讨论,讨论了为仅 charsigned charunsigned char 类型的参数启用函数重载的不同方法类型特征在 C++11 模板编译方面的帮助。

尽管令人满意,std::enable_ifstd::is_same 类型断言(参见 PS)的复合逻辑并不聪明,因为所有匹配类型,尤其是 char 尽管有符号,但在枚举中使用。因此,我希望有人可以指定一些其他子句或复合逻辑,这些子句或复合逻辑可能会更好地促进类型断言(可能是 std::is_integralstd::is_arithmeticstd::is_signed?).

附言:

template <typename type>
void foo(std::enable_if<std::is_same<type, char>::value||std::is_same<type, signed char>::value||std::is_same<type, unsigned char>::value, type> x)
{
}

最佳答案

如果你想要这样的类型特征,你必须自己做一个:

template <typename T>
struct is_char
{
static const bool value = std::is_same<T, char>::value ||
std::is_same<T, signed char>::value ||
std::is_same<T, unsigned char>::value;
};

template <typename T>
void f(T t, typename std::enable_if<is_char<T>::value>::type* = 0)
{
}

关于c++ - 编译模板方面的char、signed char或unsigned char参数类型的函数重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11836856/

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