gpt4 book ai didi

c++ - C++ 中有错误类型吗?

转载 作者:行者123 更新时间:2023-11-30 01:25:57 25 4
gpt4 key购买 nike

考虑以下类型

template <typename T1, typename T2, typename T3>
struct either_or
{
/* Here I need such an error type that says "Sorry, T1 is not an accepting type." */
typdef error<T1> type;
};
template <typename T1, typename T3>
struct either_or <T1, T1, T3>
{
typedef T1 type; //T1 Ok
};
template <typename T1, typename T2>
struct either_or <T1, T2, T1>
{
typedef T1 type; //T1 Ok
};

/* Here is function that might accept error type variable */

template <typename T>
void foo(typename either_or<T, char, unsigned char>::type x)
{
/*print char or unsigned char except that T is not printable*/
}

在这种情况下使用的 C++ 类型系统中是否存在错误类型?如果没有,我能否实现或如何实现?

最佳答案

不,语言或标准库都没有提供这样的类型。如果您愿意,欢迎您自己编写:

template <typename T>
struct error { };

另一种选择是简单地省略基本模板中的type 定义。当 T1T2T3 的值与两个特化中的任何一个都不匹配时,您将获得基本模板,它将没有 type 成员。这将导致编译器不考虑该版本的 foo,并且当您尝试使用无效参数类型调用它时,您最终会遇到编译错误。

关于c++ - C++ 中有错误类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11403140/

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