gpt4 book ai didi

c++ - 比较两种类型是否为 "literally"相同

转载 作者:行者123 更新时间:2023-12-05 08:45:31 28 4
gpt4 key购买 nike

假设我们有两种类型

using t1 = int*; using t2 = int*;

我知道 std::is_same<t1, t2>::value会给我们true .什么是,或者是否有模板工具可以实现以下目标?

tool<t1, t2>::value == false;
tool<t1, t1>::value == true;

我会说这可能是不可能的,但我不是 C++ 专家。

据推测,这个工具可以用在模板函数中作为

using allowed = int*;
using not_allowed = int*;

template <class T>
void f(T var) {
static_assert(tool<T, allowed>::value &&
tool<T, not_allowed>::value == false, "");
}

谢谢!

最佳答案

不,没有。 t1t2 实际上是同一类型。 using 不会引入任何新类型。它只是为已经存在的类型提供一个别名。

如果您想要一个类型的不同但其他方面相同的“拷贝”,您需要创建一个新类并在新类中实现原始类型的接口(interface)。 (继承可能会有所帮助,但当“复制”类型是非类类型时(如此处),继承可能会有所帮助。在 lambda 的情况下,您可以简单地再次重复 lambda 来实现这一点。)

目前没有办法创建任意类型的不同“拷贝”,即 strong typedef。新类型必须显式实现。 (搜索 strong typedef 应该会为您提供一些有助于实现它的示例和库。)

关于c++ - 比较两种类型是否为 "literally"相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72426258/

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