gpt4 book ai didi

c++ - 相同基础类型的C++变体

转载 作者:行者123 更新时间:2023-12-02 10:01:51 25 4
gpt4 key购买 nike

我有一个使用一些typedef的std::variant的代码库。
最初,它们是不同的类型,但现在它们像下面的示例一样重叠

typedef int TA;
typedef int TB;
std::variant<TA, TB> a(TA(1));

有零开销的方法可以使这项工作吗?
在Scala中,我将为此使用不透明类型,C++如何实现类似的功能?

最佳答案

您可以将类型包装在类中:

struct TA {
int value;
};

struct TB {
int value;
};

std::variant<TA, TB> a(TA{1});

现在,您有两个不同的类型,每个类型都包含一个没有开销的整数,并且可以在一个变体中进行区分。

有一些技巧可以使类的行为像整数一样,以最大程度地减少程序中所需的更改。例如,您可以为基础类型定义一个隐式转换运算符。但是,这些技巧也可能违反直觉,因此请谨慎使用。

关于c++ - 相同基础类型的C++变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62174846/

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