C23 proposal n3003和n2366分别在第一页和第七页提到了一个建议的_Either
类型,到目前为止我还没有找到任何其他的引用。据我所知,它既没有在C23 working draft中提到,也没有在任何other C23 proposals中提到。_Either
看起来像是一个类似于Rust枚举的sum类型。我想它是一个编译时构造,它迫使程序员在任何时候都要检查左类型和右类型的情况。有没有我错过的_Either
的内容?有没有人知道_Either
到底是什么以及它是如何实现的?
1条答案
按热度按时间vmdwslir1#
什么是C23
_Either
类型?目前还没有正式提出C.这似乎是WG21(C++)参与者的想法,但我认为C++也没有正式提出过这样的想法。
看起来这是相关的讨论文档:https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0709r4.pdf。它没有提供
_Either
的实际规范,但它使用符号_Either(A, B)
,用于类型A
和B
,以表示可以包含(或 * 是 *)A
或B
的类型,并且以某种方式指示任何给定示例确实包含其中的哪一个。例如,这可能被实现为一个有区别的并集,或者该文档建议它也可能完全由实现来决定,类似于va_args
。这与C23提案n3003和n2366有关,因为它们涉及泛型类型和(兼容的)类型重定义,这可能与实现
_Either()
有关。